вы бы повнимательнее код посмотрели, да документацию глянули вместо того чтоб демагогию разводить.
Суть простая — вместо того, чтобы на каждую нужную задачу не приходилось редактировать 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'");
у вас даже комментариев не написано почти нигде, или не писать комментарии тоже «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-запрос и вывод в браузер и это будет работать».
пожалуй, хватит углубляться — весь проект в таком духе
Не думал что когда-то такое скажу, но наверно в видеоуроках попова код приятнее.
И с прошлой публикации так и не видно примеров проектов на этом чуде.
Надеюсь, это все троллинг и вы не считаете это простым и легким в поддержке.
среди статей написанных подростками есть и вполне нормальные — https://habrahabr.ru/post/303912/ например. там тоже корявости, но автор хотя бы понимает что они есть
Вы составили запрос, который найдёт вам принцессу и дракона, которому нужно отрубить голову, но ошиблись и спасли дракона, отрубили голову принцессе и удалили замок
У вас есть erlang. Вы описываете спасение принцессы из замка, после тысяча гномов спасает всех принцесс из всех замков в королевстве. Теперь вам нужно решить, что делать со всеми
Имя вендора не имеет ничего общего по отношению к функционалу который он предоставляет, поэтому не должно быть включенно в названии.
Оно и не имеет, только позволяет безболезненно выбрать альтернативы реализации чего-либо. Это как в старые темные времена — префиксы названий классов, что-то типа XzUltraGoodMysqlQB превращается в элегантное Xz\UltraGood\Mysql\QB.
Согласитесь, использовать QB удобнее, чем XzUltraGoodMysqlQB.
Вам надо познакомиться с сообщником из публикации https://habrahabr.ru/post/283166 — у вас даже код похож, так что скооперируетесь.
у вас везде подобное, везде магические числа, о подсказках от 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?
Из списка «ваших трендовых фреймворк» это все, но я считаю этого достаточно, чтобы говорить о том, что я имею о них представление.
Увы, но этого недостаточно — года наверно с 2013 популярные фреймворки становятся компонентными, даже до этого в 2012м году появился композер и zend 2.0, так что именно современные стандарты вы, судя по всему, пропустили.
А там — тривиально простой код, намного более высокая производительность и еще много чего хорошего. Я просто чувствую и уверен что «right way» неверен, и у вас неверные весы
ваш «тривиально простой код» не работает в 7й версии, а активная поддержка 5.6 закончится в конце этого года, что делает ваш код не особо пригодным к продакшну. И не думаю, что ваш код будет очень быстрым, сравните производительность с phalcon.
Я пришел к вам показать новую работу и мое видение построения технологии для получения идеального кода
ничего личного, но когда кто-то на работе пишет в подобной манере, я говорю что за такое нужно сильно бить по рукам. это никак не состыковывается с понятием идеального кода.
«right way» принебрежительно относится к увеличивающейся сложности фреймворк, постоянно выбирает сложное решение, даже там где подошло бы простое.
ок, не нравятся вам фреймворки, или же не было задач сложнее сайта-визитки, где они бы помогли. Куча библиотек сейчас есть для всего, что в голову ударит. Почему бы не использовать их?
Для мелкого сайта нужно не так то много: роутер контейнер зависимостей шаблонизатор сборщик запросов, чтоб не писать запросы вручную что-нибудь для обработки запросов-ответов
ну и если очень нужно что-то делать по расписанию — что-то для консольных команд
И будет все просто, быстро и по современному, и расширять будет удобно, да и сами не запутаетесь в куче глобальных переменных и eval'ах.
Посмотрите материал по ссылкам — каждый по себе компонент очень прост, протестирован и хорошо выполняет свою задачу.
Даже модули можно будет сделать очень просто, опираясь на Aura.Di и заводя для каждого мелкого модуля свой конфиг — так можно будет перетаскивать нужное из проекта в проект.
А как в Ваше творение их впаять — я не знаю, надеюсь вы приведете пример.
как раз в непонимании базовых принципов и есть проблема. Без умения читать печатать на клавиатуре не получится. Так и тут — люди освоили синтаксис чтоб средствами php получить что-то из базы — все, золотой молоток найден, будем склеивать строки и радоваться. Вывели это на страницу — ну да ладно, пусть ругается что заголовки уже отправлены, главное работает. И получаются на выходе нежизнеспособные уродливые гомункулы, чью красоту оценить может только их создатель. А популярные решения идут лесом, потому что нужно помнить про всякий «мусор» — тестирование, консольные команды, сущности, репозитории, сервисы, шаблонизаторы и т.п… Зачем забивать голову чем-то еще, если это работает?
Суть простая — вместо того, чтобы на каждую нужную задачу не приходилось редактировать crontab, туда пишется только задание для планировщика laravel, а внутренние команды он сам разруливает по тем же правилам что и крон. За параллельное выполнение там отвечает компонент Symfony Process.
И все сводится к тому что если время настало — запускается консольная команда, которая уже непосредственно делает что-то полезное, и для редактирования периодичности ее исполнения не придется подключаться по ssh и редактировать crontab + все расписание видно в коде.
Кстати у вас нельзя задать расписание к примеру только на рабочие дни с 9 до 18:00, к тому же все выполняется последовательно, что на реальных задачах не позволит использовать ваше чудо-решение.
я вам писал про это, ваши аргументы против пространств имен не тянут на годные
бред — зачем смешивать разные зоны ответственности? Если к примеру я буду парсить посты из разных источников, то зачем мне в куски, которые получают информацию с сайта-источника, примешивать сохранение постов в базу? Получение отдельно, сохранение отдельно (первый пришедший в голову пример, таких можно кучу придумать)
Ну… в laravel есть что открывать, и самое главное — почти на любой вопрос я могу найти ответ, как и на любом популярном фреймворке. У вас даже комментариев нет, не то что документации.
вам — не нужно, остальным ваши извращенные идеи при создании этого не так очевидны.
Покажите пожалуйста пример, как в вашем чуде организовать email-рассылку на 20000 писем через mandrill, да еще так чтоб она не длилась часов 8.
вы в курсе что можно просто выполнить консольную команду?
и как оно будет выглядеть в sky?
представьте, что у вас 100-150 различных консольных команд. С вашим подходом все превратится в нечитаемую мешанину.
Запустили плановую рассылку — как закончилась отправили письмо админу
ошибаетесь, как всегда, потому что судя по всему не сталкивались с хотя бы немного сложными задачами с использованием вашего чудо-фреймворка. И если вас смущает количество подтягиваемых файлов и так печетесь о быстродействии, то смотрите сюда — https://docs.phalconphp.com/ru/latest/reference/cli.html
сравните сами и поймете что у вас все просто коряво. скажите, чем ваша реализация лучше той, что по ссылке?
давайте из архива из видео посмотрим
не лучше.
Скачал, по вашему это просто?
у вас даже комментариев не написано почти нигде, или не писать комментарии тоже «sky-way»? Ваш код простой для вас, т.к. вы автор, для остальных — нечитабельный и корявый говнокод (по другому не знаю как назвать)
И опять же — нет примеров каких-либо приложений на этом чуде
Первый попавшийся под руку файл и в нем жесть
Об этом я и писал в комментарии к вашей прошлой публикации — «Можно сделать как в старые темные времена прям в странице sql-запрос и вывод в браузер и это будет работать».
пожалуй, хватит углубляться — весь проект в таком духе
Не думал что когда-то такое скажу, но наверно в видеоуроках попова код приятнее.
И с прошлой публикации так и не видно примеров проектов на этом чуде.
Надеюсь, это все троллинг и вы не считаете это простым и легким в поддержке.
автор или толстенный тролль, или не понимает о чем говорит
еще у вашего коня есть экспериментальный реактивный двигатель
https://packagist.org/statistics — 112k пакетов и вроде норм все.
Оно и не имеет, только позволяет безболезненно выбрать альтернативы реализации чего-либо. Это как в старые темные времена — префиксы названий классов, что-то типа XzUltraGoodMysqlQB превращается в элегантное Xz\UltraGood\Mysql\QB.
Согласитесь, использовать QB удобнее, чем XzUltraGoodMysqlQB.
Вам надо познакомиться с сообщником из публикации https://habrahabr.ru/post/283166 — у вас даже код похож, так что скооперируетесь.
Если нужна производительность — то можно взять его.
есть примеры таких приложений?
вот вы пишите про новый подход, что у вас норм код, так что вот это блть значит?
у вас везде подобное, везде магические числа, о подсказках от ide можно забыть, описаний функций/методов нет
и вот такое почти везде. вам то код понятен и кажется простым — вы ж его автор, тупо запомнили. Как мне это дело протестировать? И что сложного в тех ссылках, что я привел ранее?
гибкость, говорите?
как мне сюда отдельное задание добавить? а если заданий будет 100?
прелесть
в общем жду примеров сложных приложений на этом чуде. да даже не сложных, хотя б новостной портал
Увы, но этого недостаточно — года наверно с 2013 популярные фреймворки становятся компонентными, даже до этого в 2012м году появился композер и zend 2.0, так что именно современные стандарты вы, судя по всему, пропустили.
ваш «тривиально простой код» не работает в 7й версии, а активная поддержка 5.6 закончится в конце этого года, что делает ваш код не особо пригодным к продакшну. И не думаю, что ваш код будет очень быстрым, сравните производительность с phalcon.
ничего личного, но когда кто-то на работе пишет в подобной манере, я говорю что за такое нужно сильно бить по рукам. это никак не состыковывается с понятием идеального кода.
ок, не нравятся вам фреймворки, или же не было задач сложнее сайта-визитки, где они бы помогли. Куча библиотек сейчас есть для всего, что в голову ударит. Почему бы не использовать их?
Для мелкого сайта нужно не так то много:
роутер
контейнер зависимостей
шаблонизатор
сборщик запросов, чтоб не писать запросы вручную
что-нибудь для обработки запросов-ответов
ну и если очень нужно что-то делать по расписанию — что-то для консольных команд
И будет все просто, быстро и по современному, и расширять будет удобно, да и сами не запутаетесь в куче глобальных переменных и eval'ах.
Посмотрите материал по ссылкам — каждый по себе компонент очень прост, протестирован и хорошо выполняет свою задачу.
Даже модули можно будет сделать очень просто, опираясь на Aura.Di и заводя для каждого мелкого модуля свой конфиг — так можно будет перетаскивать нужное из проекта в проект.
А как в Ваше творение их впаять — я не знаю, надеюсь вы приведете пример.