Fifafan
опять же полезная в очистке интернета от старых сайтов)
Vladimir
Vladimir
@sergeytolkachyov там этот чел иностранец уже год пишет в этот чат с вопросами - как мне создать меню в джумла :)
Vladimir
это бесполезно :)
Sergey
))
Vladimir
добро пожаловать!
Сергей Rekryt
спасибо
Dmitry
Dmitry
Он мягко говоря вообще не шарит, и не пытается, похоже
Vladimir
Vladimir
вопрос каждый раз один и тот же - как создать меню
Dmitry
Уху
Сергей Rekryt
Хочется из cli запустить скрипт, что выполнит один из методов контроллера админки. Но фреймворковские классы от которых наследуется все, в админке проверяют токен и авторизацию. External script для сайтовой части сделать легко, а для админки?
Dmitry
Dmitry
А как ругается, ошибка какая-то ?
Сергей Rekryt
модели думаю можно, а методы контроллера они ведь через execute() метод вызываются, а в обёртке проверяется авторизация. думаю вот, как подменить сессию что через cli фреймворк думал что я авторизован
ошибка это html формы авторизации в админке и ошибкой авторизации естественно
Dmitry
Вот да, контроллер вообще мимо
Dmitry
Не, ну там может компонент так построен
Сергей Rekryt
ммм JFactory::getUser()->set('isRoot', true); интересный вариант, спасиб
Сергей Rekryt
и execute можно переписать: для cli миновать авторизацию, иначе выдавать parent::execute()
Dmitry
Ну может там какая-то важная часть, которую вызвать надо
Сергей Rekryt
да, там проблема отдеьный процесс больше 120сек длится, не хочется у вебсервера timeout увеличивать
Сергей Rekryt
Сергей Rekryt
спс
Igor
Сергей Rekryt
$input->set('id', $argv[0]);
Igor
Сергей Rekryt
да
Сергей Rekryt
это только админы такое выполнять будут (если что), безопасность не важна
Igor
--task=importRegions
$this->input->getString('task', '');
Igor
Это прям в cli
Сергей Rekryt
да? а как task тогда будет?
Сергей Rekryt
php script.php option=com_pp&task=imports.import
Сергей Rekryt
врятли так
Сергей Rekryt
ааа
Сергей Rekryt
?серьёзно --task=importRegions
Сергей Rekryt
спс
Igor
да? а как task тогда будет?
Как захотите.
Ну вот которое.
Запускаем
php site_root/cli/my_script.php --my_param=x
В doExecute
$this->out($this->input->getString('my_param', ''));
На выводе
x
Сергей Rekryt
гуд, не знал
Igor
В joomla3 довольно ограниченый cli но для жизни хватает
Igor
BaseDatabaseModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/models/');
Table::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/tables/');
Joomla\CMS\Plugin\PluginHelper::importPlugin('system');
Joomla\CMS\Plugin\PluginHelper::importPlugin('content');
Ну а потом подключаете модель и понеслась
Дмитрий
@Kwinta у вас же работа с данными каким-то?
Сергей Rekryt
да, обработка данных с асинхронным curl
раньше оно на вебе висело (в плане инициирования), но теперь время обработки увеличивается
Сергей Rekryt
хочется перейти на вызыв из shell_exec или вручную
Igor
shell_exec не лучший вариант.
Igor
Вообще просто делаете либо модель либо helper свой и два вызова.
Один для cli без лимитов, можно по крону.
Второй из админики почастям с ajax для админки.
Ибо пустать какого-то менеджера к cli не лучшая идея
Дмитрий
Дмитрий
И запускаете нужное
Дмитрий
Обработка данных должна быть в моделе
Igor
Дмитрий
Базы, данные в файлах и тд
Дмитрий
Сергей Rekryt
там не надо по крону, там по требованию админа запускается процесс один раз в нужный момент, по этому shell_exec
Сергей Rekryt
можно чтобы он отдал ещё pid процесса и отслеживать время выполнения из ps -aux
Vladimir
Vladimir
я вот думаю может написать в кроне проверку на признак от админа
Дмитрий
Дмитрий
где в базе допустим данные в таблице строчка поменялась
Дмитрий
и там признак запуска
Сергей Rekryt
не, лучше тогда сделать табличку с очередью задач в бд и метод который обрабазывает эти задачи
по крону будешь его вызывать
Сергей Rekryt
а из админки добавлять задачи в очередь
Дмитрий
да
Дмитрий
так и надо
Дмитрий
я так реализовал как раз
Дмитрий
только не через кли, а через полный запуск
Дмитрий
по wget :)))
Сергей Rekryt
у меня так но для фронта
Дмитрий
но там сдохнет процесс или нет не важно
Сергей Rekryt
покачто
Дмитрий
он бронеусточейвый
Дмитрий
Сергей Rekryt
спасибо
Дмитрий
да кли ущербный
Дмитрий
но если вся логика в моделях, то можно кли
Сергей Rekryt
логика в хелпере, но модель он умеет получать
Дмитрий