Php. Как запустить программу (процесс) в фоне?


Метод exec и ему подобные, как известно, ожидают выполнения запущенного приложения, тем самым задерживая выполнение основного скрипта. Это не есть хорошо и даже непозволительно.

Сегодня, столкнувшись с необходимостью запуска скрипта с удаленного сервера для генерации отчета нашел подходящее мне решение.

На уникальность и предельную красоту не претендую. Привожу в качестве примера, в какую сторону можно копнуть:

system ( 'wget "http://site.com/script.php" > /dev/null 2>&1 &' );

Лучший, как по мне, вариант использовать curl вместо wget, но конкретно в моем случае его применение невозможно, поэтому я не смог окончательно проверить его работу.

Также обращаю внимание на адрес в кавычках. Данный пример отработает и без них, но если Вы будете передавать в GET параметры с разделителями (&) или другими символами — очень высока вероятность распознания в них спец. символов и, как итог, разбиения строки на подкоманды.

Поэтому , как говорится, на всякий пожарный ставьте кавычки.

, ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *