Pull to refresh
3
0
Send message
вы бы повнимательнее код посмотрели, да документацию глянули вместо того чтоб демагогию разводить.
Суть простая — вместо того, чтобы на каждую нужную задачу не приходилось редактировать crontab, туда пишется только задание для планировщика laravel, а внутренние команды он сам разруливает по тем же правилам что и крон. За параллельное выполнение там отвечает компонент Symfony Process.
И все сводится к тому что если время настало — запускается консольная команда, которая уже непосредственно делает что-то полезное, и для редактирования периодичности ее исполнения не придется подключаться по ssh и редактировать crontab + все расписание видно в коде.
Кстати у вас нельзя задать расписание к примеру только на рабочие дни с 9 до 18:00, к тому же все выполняется последовательно, что на реальных задачах не позволит использовать ваше чудо-решение.
весело, из вашего комментария очевидно что крупнее сайта-визитки или бложика вы не делали
Про namespace я молчу.

я вам писал про это, ваши аргументы против пространств имен не тянут на годные
КПИ (код повторного использ.) для работы с DB лучше объединить с другим кодом, который в ларавел разделен.

бред — зачем смешивать разные зоны ответственности? Если к примеру я буду парсить посты из разных источников, то зачем мне в куски, которые получают информацию с сайта-источника, примешивать сохранение постов в базу? Получение отдельно, сохранение отдельно (первый пришедший в голову пример, таких можно кучу придумать)
дополнительно вам нужно открыть страницу (что вы дали выше) чтобы изучить документацию

Ну… в laravel есть что открывать, и самое главное — почти на любой вопрос я могу найти ответ, как и на любом популярном фреймворке. У вас даже комментариев нет, не то что документации.
В SKY не нужно ничего изучать для добавления крон-задачи.

вам — не нужно, остальным ваши извращенные идеи при создании этого не так очевидны.
В SKY нужно только знать SQL той БД с которой работаем, у ларавел опять таки вплюс нужно изучить класс, чтобы написать DB::table('recent_users')->delete();

Покажите пожалуйста пример, как в вашем чуде организовать email-рассылку на 20000 писем через mandrill, да еще так чтоб она не длилась часов 8.
ОК, сделаем еще один файл, наперекор автору ларавел, но нет метода ->now()

вы в курсе что можно просто выполнить консольную команду?
$schedule->command('foo')->weekdays()->hourly()->timezone('America/Chicago')->between('8:00', '17:00');
выглядит сложно и некрасиво.

и как оно будет выглядеть в sky?
нет никакой опасности переопределить глобальные переменные, у ларавел делается класс, что лишнее

представьте, что у вас 100-150 различных консольных команд. С вашим подходом все превратится в нечитаемую мешанину.
Тоже самое касается хуков ->before() и ->after()

Запустили плановую рассылку — как закончилась отправили письмо админу
Вы мне дали ссылку, просто Клондайк для антирекламы ларавел, если я не ошибаюсь…

ошибаетесь, как всегда, потому что судя по всему не сталкивались с хотя бы немного сложными задачами с использованием вашего чудо-фреймворка. И если вас смущает количество подтягиваемых файлов и так печетесь о быстродействии, то смотрите сюда — https://docs.phalconphp.com/ru/latest/reference/cli.html
если у вас там типа планировщик, возьмите за образец https://laravel.com/docs/5.3/scheduling
сравните сами и поймете что у вас все просто коряво. скажите, чем ваша реализация лучше той, что по ссылке?
более простого восприятия? вы точно тролль. там ни в одном редакторе даже подсветка не сработает, я уже молчу про тотальное отсутствие комментариев.
давайте из архива из видео посмотрим
$log = [];
$sky = new SKY;
extract($sky->load(), EXTR_PREFIX_ALL | EXTR_REFS, 's') or exit('err mem');
if ($sky->debug) require 'main/debug.php';

if (at('0 23')) lsql("delete from visitors where dt_l + $s_clear < now()");

at('59 23') && sql("+select 'do work once at the end of day'"); # sample2
if (at('1 0')) $sky->s_email_cnt = 0;
if (at('3 3')) require 'main/c_sitemap.php';
$sky->save([
	'cron_dt' => sprintf("%s, execution time: %01.3f sec, SQL nums in cron tasks: $sky->qn", NOW, microtime(true) - START_TS),
	'online'  => sql("+select count(1) from visitors where dt_l > now() - interval $s_visit minute"),
]);
lsql("+select 'test'");

не лучше.
Вы скачайте код к видео, посмотрите как он прост.

Скачал, по вашему это просто?
define('DIFF_CNTS', 'if ($d >= 0) $i++;
if ($T & 1) { if (!$sl) $l_ = $l; $sl++; }
if ($T & 2) { if (!$sn) $n_ = $n; $sn++; }
$T = 0;');

define('DIFF_UNIQ', '$f = 0;
if ($d < 0) {
	$srch = $old[--$l_].$l0.$srch; $l0 = "\n";
	$repl = $new[--$n_].$n0.$repl; $n0 = "\n";
	if ($x && $x[2] == $l_) $f = 1;
} else {
	if ($sn) for (; $sn; $sn--, $n0 = "\n") $repl .= $n0.$new[$n++]; else { $n_ = $n; $f = 1; }
	if ($sl) for (; $sl; $sl--, $l0 = "\n") $srch .= $l0.$old[$l++]; else { $l_ = $l; $f = 1; }
	if ($f) return 1;
}
if ($f) {
	$file = str_replace($x[0], $x[1], $file); $snap = str_replace($x[1], $x[0], $snap);
	$x[0] .= "\n".$srch; $x[1] .= "\n".$repl;
} elseif (eval(DIFF_TEST)) {
	if ($x) $str .= sprintf("\n\n# SEARCH:  #\n%s\n\n# REPLACE:  #\n%s", cbesc($x[0]), cbesc($x[1]));
	$x[0] = $srch; $x[1] = $repl;
} else return 1;
$x[2] = $l;
$file = str_replace($x[1], $x[0], $file); $snap = str_replace($x[0], $x[1], $snap);
$srch = $repl = $n0 = $l0 = "";
$sn = $sl = $d = 0;
$n++; $l++;
return 0;');

define('DIFF_TEST', '
if ($srch === "" || $repl === "" || substr_count($snap, $srch) != 1 || substr_count($file, $repl) != 1) return 0;
$_t = str_replace("\n", "", $srch); if ("" === $_t || "" === trim($_t, $_t[0])) return 0;
$_t = str_replace("\n", "", $repl); if ("" === $_t || "" === trim($_t, $_t[0])) return 0;
return 1;');

define('DIFF_UFIX', '
if (!$l_) $d = 1;
elseif ($i >= $c) $d = -1;
elseif ($d == 0) { # search ext direction
	$db = $x ? $l_ - $x[2] : 0;
	for ($df = 0; $df + $i < $c; $df++) if ($rL[$df + $i] != "=") break;
	if ($df + $i == $c) $df = 0;
	if ($db && $df) $d = $db < $df ? -1 : 1;
	elseif ($db) $d = -1;
	elseif ($df) $d = 1;
	else $d = $l_ < $c - $i ? -1 : 1;
}
$sn = $sl = $d;');

у вас даже комментариев не написано почти нигде, или не писать комментарии тоже «sky-way»? Ваш код простой для вас, т.к. вы автор, для остальных — нечитабельный и корявый говнокод (по другому не знаю как назвать)
И опять же — нет примеров каких-либо приложений на этом чуде
Давайте же углубимся в суть.
Первый попавшийся под руку файл и в нем жесть
$useds = ['---', 'used', 'not used'];
$edit = is_numeric($PVAL);
$block = $u_profile_code && $u_profile_code < 4 ? '' : 'none';

function checkbox($p) {
	global $targets, $wona;
	return sprintf('%s type="checkbox"', $p > -1 ? ($targets[$p] ? ' checked' : '') : ($wona[-$p - 1] ? ' checked' : ''));
}

$sql = "~select left(p.status,2)='00' or c.package_id=0 as x, p.name as pname, c.*
	from _dev_codebase c
	left join _dev_packages p on (p.id = c.package_id)
	where c.id=$PVAL";
extract($edit ? sql($sql) : ['x' => 1, 'pname' => 0] + get_columns2('_dev_codebase', 3), EXTR_PREFIX_ALL, 'r');
list ($tabs, $vo_me, $vo_all, $targets, $status, $wona) = explode(' ', $r_status, 6);
$d = '';

echo str_replace('%TITLE%', "Edit CBR - $TITLE", $start_html); ?>

Об этом я и писал в комментарии к вашей прошлой публикации — «Можно сделать как в старые темные времена прям в странице sql-запрос и вывод в браузер и это будет работать».
пожалуй, хватит углубляться — весь проект в таком духе
Не думал что когда-то такое скажу, но наверно в видеоуроках попова код приятнее.
И с прошлой публикации так и не видно примеров проектов на этом чуде.
Надеюсь, это все троллинг и вы не считаете это простым и легким в поддержке.
Требуется переработка классов на packagist в соответствии с идеологией SKY

роутинг страниц, как механизм излишен.

Писать код в глобальную область видимости и использовать eval() в коде нужно шире, как это делается в SKY framework

Механизм NAMESPACE излишен.

автор или толстенный тролль, или не понимает о чем говорит
среди статей написанных подростками есть и вполне нормальные — https://habrahabr.ru/post/303912/ например. там тоже корявости, но автор хотя бы понимает что они есть
 <script>
   var idArray = [<?php $i=1; while($i <= $b){echo '"s'.$i.'"'; $i++};?>];

image
всегда хотел спросить — а есть ли миграции бд? в модулях что-то не заметил ничего подобного
вообще не особо важно пробегает конь 100 метров за секунду или за 2, если у повозки сломано колесо (кривой sql-запрос по большой таблице без индексов)
да, несправедливо — с использованием буфера выходит медленнее
Ваш конь за последний год стал в два раза быстрее

еще у вашего коня есть экспериментальный реактивный двигатель
им нужна помощь рыцарей с css и javascript
Вы составили запрос, который найдёт вам принцессу и дракона, которому нужно отрубить голову, но ошиблись и спасли дракона, отрубили голову принцессе и удалили замок
У вас есть erlang. Вы описываете спасение принцессы из замка, после тысяча гномов спасает всех принцесс из всех замков в королевстве. Теперь вам нужно решить, что делать со всеми
такая идеология скоро создаст на пакажист помойку и будет трудно найти хороший пакет так как будет представлено много альтернативных.

https://packagist.org/statistics — 112k пакетов и вроде норм все.
Имя вендора не имеет ничего общего по отношению к функционалу который он предоставляет, поэтому не должно быть включенно в названии.

Оно и не имеет, только позволяет безболезненно выбрать альтернативы реализации чего-либо. Это как в старые темные времена — префиксы названий классов, что-то типа XzUltraGoodMysqlQB превращается в элегантное Xz\UltraGood\Mysql\QB.
Согласитесь, использовать QB удобнее, чем XzUltraGoodMysqlQB.
Вам надо познакомиться с сообщником из публикации https://habrahabr.ru/post/283166 — у вас даже код похож, так что скооперируетесь.
почему же глупо? Phalcon — php-фреймворк с современным подходом, который вы отрицаете.
Если нужна производительность — то можно взять его.
я не то что верю, я знаю, что сайты на SKY Framework могут масштабироваться до очень сложных и много функциональных приложений.

есть примеры таких приложений?
вот вы пишите про новый подход, что у вас норм код, так что вот это блть значит?
(string)@$GLOBALS['sky']->mem[$char][3][substr($name, 2)];

у вас везде подобное, везде магические числа, о подсказках от ide можно забыть, описаний функций/методов нет
function strand($n = 23) {
    $str = 'abcdefghjkmnpqrstuvwxyzACDEFGHJKLMNPQRSTUVWXYZ2345679'; # length == 53
    if ($n != 7) $str .= 'o0Ol1iIB8'

и вот такое почти везде. вам то код понятен и кажется простым — вы ж его автор, тупо запомнили. Как мне это дело протестировать? И что сложного в тех ссылках, что я привел ранее?
гибкость, говорите?
if (at('0 23')) lsql("delete from visitors where dt_l + $s_clear < now()");
 
at('59 23') && sql("+select 'do work once at the end of day'"); # sample2
if (at('1 0')) $sky->s_email_cnt = 0;
if (at('3 3')) require 'main/c_sitemap.php';

как мне сюда отдельное задание добавить? а если заданий будет 100?
$txt .= '<style type="text/css">
.tbl {width:80%;border:1px solid silver;margin-top:10px} .tbl td {vertical-align:top;padding: 0 5px}
.dvx {width:80%} .ltd {width:30%;border-right:1px solid silver}
.fr {float:right;font-weight:bold}
</style>';
}

прелесть
в общем жду примеров сложных приложений на этом чуде. да даже не сложных, хотя б новостной портал
Я работал с Zend.1 больше года

Из списка «ваших трендовых фреймворк» это все, но я считаю этого достаточно, чтобы говорить о том, что я имею о них представление.

Увы, но этого недостаточно — года наверно с 2013 популярные фреймворки становятся компонентными, даже до этого в 2012м году появился композер и zend 2.0, так что именно современные стандарты вы, судя по всему, пропустили.
А там — тривиально простой код, намного более высокая производительность и еще много чего хорошего. Я просто чувствую и уверен что «right way» неверен, и у вас неверные весы

ваш «тривиально простой код» не работает в 7й версии, а активная поддержка 5.6 закончится в конце этого года, что делает ваш код не особо пригодным к продакшну. И не думаю, что ваш код будет очень быстрым, сравните производительность с phalcon.
Я пришел к вам показать новую работу и мое видение построения технологии для получения идеального кода

$_POST['login'] = $user->login;
    $top_html .= '<div id="content"><table width="100%" height="100%"><tr><td align="center">';
    $top_html .= form($_POST, ['login' => array('', 'Login'), 'password' => array('', 'Password'), array('submit', 'post')]);
    echo strtr($top_html, ['%TITLE%' => 'Admin login form', '%HEAD%' => '']) . '</td></tr></table></div><hr>';
    echo tag(a("<b>$s_title</b>", LINK) . ", the <b>SKY</b> app, see " . a('www.coresky.net') . ', years 2012-' . date('Y'));

ничего личного, но когда кто-то на работе пишет в подобной манере, я говорю что за такое нужно сильно бить по рукам. это никак не состыковывается с понятием идеального кода.
«right way» принебрежительно относится к увеличивающейся сложности фреймворк, постоянно выбирает сложное решение, даже там где подошло бы простое.

ок, не нравятся вам фреймворки, или же не было задач сложнее сайта-визитки, где они бы помогли. Куча библиотек сейчас есть для всего, что в голову ударит. Почему бы не использовать их?
Для мелкого сайта нужно не так то много:
роутер
контейнер зависимостей
шаблонизатор
сборщик запросов, чтоб не писать запросы вручную
что-нибудь для обработки запросов-ответов
ну и если очень нужно что-то делать по расписанию — что-то для консольных команд
И будет все просто, быстро и по современному, и расширять будет удобно, да и сами не запутаетесь в куче глобальных переменных и eval'ах.
Посмотрите материал по ссылкам — каждый по себе компонент очень прост, протестирован и хорошо выполняет свою задачу.
Даже модули можно будет сделать очень просто, опираясь на Aura.Di и заводя для каждого мелкого модуля свой конфиг — так можно будет перетаскивать нужное из проекта в проект.
А как в Ваше творение их впаять — я не знаю, надеюсь вы приведете пример.

как раз в непонимании базовых принципов и есть проблема. Без умения читать печатать на клавиатуре не получится. Так и тут — люди освоили синтаксис чтоб средствами php получить что-то из базы — все, золотой молоток найден, будем склеивать строки и радоваться. Вывели это на страницу — ну да ладно, пусть ругается что заголовки уже отправлены, главное работает. И получаются на выходе нежизнеспособные уродливые гомункулы, чью красоту оценить может только их создатель. А популярные решения идут лесом, потому что нужно помнить про всякий «мусор» — тестирование, консольные команды, сущности, репозитории, сервисы, шаблонизаторы и т.п… Зачем забивать голову чем-то еще, если это работает?

Information

Rating
Does not participate
Registered
Activity