Размещено: 2024-01-28 22:53:41

Теги: php

ЗАПУСК КОНСОЛЬНЫХ СКРИПТОВ PHP

Прежде всего необходимо проверить, что бы скрипт корректно работал и попробовать запустить его через Shell-консоль. На некоторых хостингах по умолчанию все консольные команды запрещены. Что бы разрешить запуск на обычном хостинге через php необходимо снять запрет на консольные команды.

Заходим в ispmanager: WWW -> PHP -> Расширенная настройка PHP -> disable_functions и разрешаем команды: exec, shell_exec. Либо изменить disable_functions в php.ini, если к нему конечно есть доступ.

В самом простом виде команда на запуск php скрипта выглядит как:

shell_exec("php script.php");

Что бы запустить с определённой версией php нужно прописать путь до версии

Путь к интерпретатору PHP: /opt/alt/php53/usr/bin/php. Найти этот путь можно на вкладке в ispmanager WWW -> WWW-домены -> Изменить -> Путь к интерпретатору PHP.

Что бы запустить с определённой версией php:

shell_exec("/opt/alt/php53/usr/bin/php script.php");

Путь к файлу указывается абсолютный от корневого каталога на сервере:

shell_exec("/opt/alt/php53/usr/bin/php /var/www/vh123456/data/www/site.ru/task.php");

Передача переменных

Что бы передать в выполняемый скрипт переменную, нужно дополнительно в конце команды прописать её:

shell_exec("/opt/alt/php53/usr/bin/php /var/www/vh123456/data/www/site.ru/task.php acbd");

Из самого скрипта её можно отловить с помощью $argv — массив переданных скрипту аргументов.

Содержит массив (array) всех аргументов, переданных скрипту при запуске из командной строки.

Первый аргумент $argv[0] всегда содержит имя файла запущенного скрипта. А начиная с 1-го идут переданные аргументы.

Асинхронное подключение скрипта - выполнение в фоновом режиме

Что бы не ждать выполнения скрипта и не блокировать основной поток работы программы, необходимо прописать дополнительно в конце команды

 > /dev/null &

тогда скрипт запускается в фоновом режиме и не прерывает выполнение основной программы.

Что бы запустить скрипт, не ждать результат его выполнения, а получить pid процесса:

$pid=shell_exec("php /var/www/vh12345/data/www/site.ru/script.php >/dev/null 2>&1 & echo $!");
echo $pid;

Что бы узнать статус процесса: ps -p $pid, что бы завершить: kill $pid


На эту страницу чаще всего попадают по запросам: