Fifafan
опять же полезная в очистке интернета от старых сайтов)
Vladimir
Если это можно включать/отключать, то очень полезная херь
кто же будет что то отключать и включать? :)
Vladimir
@sergeytolkachyov там этот чел иностранец уже год пишет в этот чат с вопросами - как мне создать меню в джумла :)
Vladimir
это бесполезно :)
Sergey
))
Vladimir
добро пожаловать!
Сергей Rekryt
спасибо
Dmitry
Dmitry
Он мягко говоря вообще не шарит, и не пытается, похоже
Vladimir
вопрос каждый раз один и тот же - как создать меню
Dmitry
Уху
Сергей Rekryt
Хочется из cli запустить скрипт, что выполнит один из методов контроллера админки. Но фреймворковские классы от которых наследуется все, в админке проверяют токен и авторизацию. External script для сайтовой части сделать легко, а для админки?
Dmitry
А как ругается, ошибка какая-то ?
Сергей Rekryt
модели думаю можно, а методы контроллера они ведь через execute() метод вызываются, а в обёртке проверяется авторизация. думаю вот, как подменить сессию что через cli фреймворк думал что я авторизован ошибка это html формы авторизации в админке и ошибкой авторизации естественно
Igor
Хочется из cli запустить скрипт, что выполнит один из методов контроллера админки. Но фреймворковские классы от которых наследуется все, в админке проверяют токен и авторизацию. External script для сайтовой части сделать легко, а для админки?
Ну для начала, не коректно вызывать контролер в cli Во вторых $_SERVER['HTTP_HOST'] = 'domain.com'; Factory::getApplication('administrator'); Factory::getUser()->set('isRoot', true); Factory::getLanguage()->load('com_component', JPATH_ADMINISTRATOR, 'en-GB'); Factory::getLanguage()->load('lib_joomla', JPATH_ADMINISTRATOR, 'en-GB');
Dmitry
Вот да, контроллер вообще мимо
Dmitry
Не, ну там может компонент так построен
Сергей Rekryt
ммм JFactory::getUser()->set('isRoot', true); интересный вариант, спасиб
Igor
Не, ну там может компонент так построен
Ни разу такого компонента не видел. Что-то с контолерами обычно все нормально.
Сергей Rekryt
и execute можно переписать: для cli миновать авторизацию, иначе выдавать parent::execute()
Dmitry
Ну может там какая-то важная часть, которую вызвать надо
Igor
ммм JFactory::getUser()->set('isRoot', true); интересный вариант, спасиб
Обращайтесь на модель. Тобишь делаете тоже самое что и контролер. Фактичесски ваш cli и есть контролер, не стоит дублировать. К томуже контролеры работают с post и get данными.
Сергей Rekryt
да, там проблема отдеьный процесс больше 120сек длится, не хочется у вебсервера timeout увеличивать
Сергей Rekryt
спс
Сергей Rekryt
$input->set('id', $argv[0]);
Igor
$input->set('id', $argv[0]);
Передаете в аругменты cli id?
Сергей 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
Обработка данных должна быть в моделе
Ну или в helper в крайнем случае
Дмитрий
Базы, данные в файлах и тд
Дмитрий
Сергей Rekryt
там не надо по крону, там по требованию админа запускается процесс один раз в нужный момент, по этому shell_exec
Сергей Rekryt
можно чтобы он отдал ещё pid процесса и отслеживать время выполнения из ps -aux
Vladimir
я вот думаю может написать в кроне проверку на признак от админа
Дмитрий
где в базе допустим данные в таблице строчка поменялась
Дмитрий
и там признак запуска
Сергей Rekryt
не, лучше тогда сделать табличку с очередью задач в бд и метод который обрабазывает эти задачи по крону будешь его вызывать
Сергей Rekryt
а из админки добавлять задачи в очередь
Дмитрий
да
Дмитрий
так и надо
Дмитрий
я так реализовал как раз
Дмитрий
только не через кли, а через полный запуск
Дмитрий
по wget :)))
Сергей Rekryt
у меня так но для фронта
Дмитрий
но там сдохнет процесс или нет не важно
Сергей Rekryt
покачто
Дмитрий
он бронеусточейвый
Дмитрий
Сергей Rekryt
по wget :)))
оу, это идея
Сергей Rekryt
спасибо
Дмитрий
да кли ущербный
Дмитрий
но если вся логика в моделях, то можно кли
Сергей Rekryt
логика в хелпере, но модель он умеет получать
Дмитрий