Dmitry
про CLI скрипт не слышал еще
Приложение командной строки
Artem
про CLI скрипт не слышал еще
В корен есть папочка cli
Dmitry
https://github.com/joomla/joomla-cms/tree/3.10-dev/cli
Sergey
Сюда пихаю свой файл и пропсиываю в кроне?
Dmitry
Посмотри, как сделаны родные
Dmitry
Там всё достаточно просто
Dmitry
И в кроне что-то типа /usr/bin/php /var/www/mysitepath/cli/myfile.php
Sergey
ну по аналогии? японял главное начало файла и чтоб был от класса ApplicationCli
Sergey
Спасибо!
Dmitry
PHP умеешь, значит разберёшься 👌
Sergey
а как проверить что скрипт работает? я же его так не запущу? /var/www/mysitepath/cli/myfile.php ? в браузере?
Дмитрий
Да
скопируй там стандартный и поменяй названия и вырежи лишнее
Дмитрий
там есть пару штук в joomla3
Sergey
зачем? запускай в консоли
ну так и думал. ок спасибо
Дмитрий
ну так и думал. ок спасибо
если нужны параметры динамические в скрипт
Дмитрий
то и это можно
Дмитрий
php /путь до джумлы/cli/myscript.php --name1 value1 --name2 value2
Дмитрий
они потом в инпуте будут как обчные переменные
hary
Коллеги, где прочесть подробнее про индексацию умного поиска. Я обнаружил что в 4 ке поменяли поиск, старого теперь нет, и пытаюсь индексировать - оно завешивается
hary
угу. а теперь возьмите свежий дистриб джумлы 4ки и покажите где он там лежит?
hary
в папке кли я не нашел
hary
а от тройки подставил - оно ругается
Artem
а, ща вспомним
hary
было 200 из 405, поменял пхп на 7ку - уже 250 из 405 в тегах, и всее полоска идет а дальше ничего
Den 💙💛
ну по аналогии? японял главное начало файла и чтоб был от класса ApplicationCli
Если вне джумлы, что-то нужно сделать, или записать в базу данные, то можно на чистом cli без джумлы. Не будет лишний раз дёргаться излишек кода
hary
а, теперь в самом файле джумла это вшили?
Den 💙💛
Вы бы ещё только, когда cli запускаете проверили с какой версии php запускаете )))
Artem
а, теперь в самом файле джумла это вшили?
теперь есть полноценное CLIApplication, и файл joomla.php является точкой входа. По аналогии с index.php сайта и админки
Den 💙💛
Актуально если на хостинге несколько версий, или на сервере тоже не одна версия стоит
Artem
Вы бы ещё только, когда cli запускаете проверили с какой версии php запускаете )))
ну да. Не лишним будет убедиться, что php "тот что надо"
Artem
php -v
Den 💙💛
теперь есть полноценное CLIApplication, и файл joomla.php является точкой входа. По аналогии с index.php сайта и админки
Если, что-то простое, и не нужен функционал джумлы, то лучше на нативном. И тут можно в принципе отличную от джумлы версию пыха заюзать. Запуститься как отдельный процесс. Хорошо для нагруженных сайтов
hary
/opt/php81/bin/php-cgi /var/www/data/www/oldsl.com/cli/joomla.php finder:index X-Powered-By: PHP/8.1.17 Content-type: text/html; charset=UTF-8 [root@user~]#
hary
чегото не вижу чтоб что нибудь делалося
hary
ну хоть какой прізнак что процесс ідет
hary
а то приглашение на новую команду типа толи выполнилось уже, толи даже не начало
hary
там 6000 статей
Den 💙💛
ну хоть какой прізнак что процесс ідет
А в скрипте это прописано?😀
hary
ну должно ж что то высвечівать. хоть ошібкі
hary
hary
хоть так
Artem
ну, судя по всему, мультиязычночть на falang'е лезет боком
hary
лезет. с прошлой осени после переноса уже подучился делать каак надо - средствами джумлы. а там еще оч много статей. хз как их внедрить к стандартовым
Vladimir
У тебя есть пример? Скинь глянуть
В радикалмарте есть примеры
Sergey
В радикалмарте есть примеры
Заметку замутить ещё
Artem
У тебя есть пример? Скинь глянуть
class PlgConsoleBottec extends CMSPlugin implements SubscriberInterface { protected $autoloadLanguage = true; protected static $commands = [ LinkUserChatsToBot::class ]; public static function getSubscribedEvents(): array { return [ ApplicationEvents::BEFORE_EXECUTE => 'registerCLICommands', ]; } public function registerCLICommands(ApplicationEvent $event) { foreach (static::$commands as $commandFQN) { try { if (!class_exists($commandFQN)) { continue; } $command = new $commandFQN(); Factory::getApplication()->addCommand($command); } catch (Throwable $e) { continue; } } } }
Artem
class LinkUserChatsToBot extends AbstractCommand { /** * The default command name * * @var string * @since 4.0.0 */ protected static $defaultName = 'bottec:linkuserchatstobot'; protected function doExecute(InputInterface $input, OutputInterface $output): int { ... return Command::SUCCESS; } }
Artem
Получается, что всё сводится к тому, что в плагине, через вызов Factory::getApplication()->addCommand($command); ты должен зарегистрировать класс, который является реализацией класса AbstractCommand В самом же классе команды должен обязательно присутсвовать параметр protected static $defaultName который отвечает за написание команды в консоли Например php joomla.php bottec:linkuserchatstobot, для примера выше и обязательно метод doExecute, в котором запускается логика
Artem
Если у тебя есть доступ к репозиториям радикалмарта, то там можешь ещё посмотреть, ка кигорь выводит различные сообщения красивые, разукрашивает вывод и рисует прогрессбар
Sergey
ошибка((
Sergey
Sergey
JApplicationCli::getInstance('Updateindex')->execute(); на эту срочку
Sergey
класс назван также
Artem
а все define на месте, котрые до объявления класса идут?
Artem
Там же ядро подключается
Sergey
да брал по анаогии один в один файл
Sergey
может тут use не там обьявил?
Sergey
3
Sergey
щас возьму сдругого файла
RINAT
Creating a healthier community, together - The Joomla Community Magazine https://magazine.joomla.org/all-issues/june/creating-a-healthier-community-together
Sergey
а как вbah посмотреть где запускнае файлы для каждой версии пхп? или можно на сайте посмотреть в инфе о пхп откуда запускается?
Sergey
Sergey
как скипт из под 74 запустить?
Sergey
теперь вотве выдает X-Powered-By: PHP/7.4.33 Contetn-type: text/html и ничего не происходит