PHP запускает неблокирующий системный вызов - PullRequest
4 голосов
/ 05 сентября 2011

Как я могу запустить неблокирующий системный вызов в PHP?

Системный вызов вызовет потоковую службу, запускаемую вторым PHP-скриптом. Итак, моя страница сидит и ждет этого вызова.

Мои две мысли о решении:

1: существует собственный метод / параметр для выполнения системного вызова путем неблокирования

2: Запуск system () в новой программе C ++тогда он разветвляется и запускает сам скрипт php на sep.thread

Есть ли собственный метод выполнения системных вызовов неблокирующим образом, или мне нужно взломать это ...

У меня есть shell_exec ('nohup php / path / to/file.php & '), но он все еще содержит

1 Ответ

4 голосов
/ 05 сентября 2011

С Руководство по PHP :

Если программа запускается с этой функцией, чтобы она продолжала работать в фоновом режиме, выходные данные программы должны быть перенаправленыв файл или другой выходной поток.В противном случае PHP будет зависать, пока не закончится выполнение программы.

Пример приведен в комментарии на той же странице (на основе linux):

Если вы хотите запустить процесс php, который продолжает работать независимо от apache (с другим родительским pid), используйте nohub.Пример:

exec ('nohup php process.php> process.out 2> process.err </ dev / null &'); </p>

...