Как запускать скрипты на языке PHP?
PHP-интерпретатор по умолчанию включен для всех тарифных планов Unix-хостинга. Необходимо просто закачать файл с расширением «php» и открыть его в браузере.
По умолчанию все php скрипты запускаются как CGI-приложение. Все скрипты исполняются в изолированном окружении пользователя (технологии изолированных LVE-контейнеров). Ресурсы, используемые скриптами, лимитируются до величин, указанных в Приложении №1 к Публичному договору.
Все такие скрипты должны иметь расширения .php, .phtml или .phtm. Для этих скриптов не требуется установка особых атрибутов. Достаточно руководствоваться правилом, описанным выше.
bash. Запускать на выполнение php-скрипт в цикле, пока он не вернет false
Ubuntu server. Необходимо с помощью bash в цикле запускать на выполнение php-скрипт пока он (php-скрипт) возвращает true (или какое-то значение). Как только php-скрипт возвращает отличное от true значение — цикл завершить. Дополнительно ограничить количество итераций цикла 100 повторениями. Подскажите как это сделать.
Отслеживать
user305545
задан 30 мая 2019 в 8:00
user305545 user305545
613 8 8 серебряных знаков 20 20 бронзовых знаков
вместо «команда» запускаю sudo -u admin php «/home/web/. /script.php», который возвращает либо true, либо false. Если false — то прервать цикл.
30 мая 2019 в 9:07
php-скрипт по результату выполнения возвращает «return true;», либо «return false;». Это значение нужно отследить и соответственно либо продолжить цикл, либо прервать выполнение.
30 мая 2019 в 9:17
т.е., php не имеет никакого отношения к вопросу. внесите, пожалуйста, правку, убрав метки php, ubuntu, shell (раз вам именно на bash-е нужно решение, а не на posix-совместимой оболочке), и, очень желательно, упоминания (в тексте вопроса) всего того, что не имеет никакого отношения к вопросу («ubuntu-сервер», «php-скрипт» и т.п.), оставив только существенную информацию.
Как запустить PHP-скрипт в отладочном режиме
Все относительно просто, достаточно запустить скрипт с включенным флагом xdebug.remote_autostart . Делается это так:
php -dxdebug.remote_autostart=On script.php
Также можно включить глобальный режим отладки, определив переменную окружения XDEBUG_CONFIG=»idekey=netbeans-xdebug»
Теперь в текущей bash-сессии все вызовы php script.php будут вызываны в отладочном режиме.
Решение
Теперь осталось все это дело красиво оформить, добавляем в ~/.bashrc
alias php-debug="php -dxdebug.remote_autostart=On" alias php-debug-enable="export XDEBUG_CONFIG=\"idekey=netbeans-xdebug\"" alias php-debug-disable="export -n XDEBUG_CONFIG"
Перезагружаем сессию или вызываем source ~/.bashrc и теперь можно использовать php-debug — запуск скрипта в отладочном режиме php-debug-enable и php-debug-disable — включение и выключение глобального отладочного режима
php script.php php-debug script.php php-debug-enable php script1.php php script2.php php script3.php php-debug-disable
Дополнительно
- В алиасе php-debug-enable не забудьте убедиться, что в настроена на аналогичный ключ.
- Если в PHPStorm указать пустой IDEKEY, то среда будет перехватывать все xdebug вызовы, что в целом неплохо, можно не заморачиваться в поводу значения ключа (собственно, по умолчанию оно и является пустым).
Pavel Shorokhov’s blog
- Pavel Shorokhov’s blog
- juneuniversum@gmail.com
Запуск php-скрипта каждую секунду
Каким образом нормально запускать php-скрипт каждую секунду без бесконечных циклов? Сейчас использую решение на bash с использованием командой nohup, но не нравится мне этот бесконечный цикл. Запускаю командой:
nohup /path/script.sh > /dev/null 2>&1
while true; do php -f /path/script.php sleep 1 done
Почему-то мне кажется, что это ненормально. Возможно ошибаюсь.
Отслеживать
задан 15 дек 2019 в 18:13
3,676 8 8 золотых знаков 53 53 серебряных знака 137 137 бронзовых знаков
нормально. либо в самом PHP скрипте сделать бесконечный цикл с задержкой.
15 дек 2019 в 18:16
крон в помощь.
15 дек 2019 в 18:28
@Виталий Шебаниц, в чём отличие крона от моего способа? Там тот же бесконечный цикл или я что-то не знаю?)
15 дек 2019 в 18:38
Отличия не значительны, если вы на 100% уверенны в вашем скрипте. Даже наоборот. крон сожрет немного больше чем ваш скрипт. Но тут тогда вопрос в другом: что будет если ваш скрипт вылетит? кто позаботится о нем, о его перезапуске.
15 дек 2019 в 19:57
@ВиталийШебаниц, ТС хочет запускать php-скрипт каждую секунду . Кроном так нельзя. Минимально — минута
