2008-10-28 2 views
4

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

Я бег PHP 5.1.2

ответ

2

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

Существует довольно приличный учебник по pcntl здесь:

http://hudzilla.org/phpwiki/index.php?title=Miscellaneous_topics

http://hudzilla.org/phpwiki/index.php?title=Duplication_of_resources_when_forking

+0

Обновленные ссылки: http://www.hackingwithphp.com/16/0/0/miscellaneous-topics и http://www.hackingwithphp.com/16/1/4/duplication-of-resources-when- разветвление – Greg 2015-09-16 16:11:17

0

Это работает для меня:

$cmd_to_run = escapeshellarg('/path/to/file --args'); 
`echo $cmd_to_run | /bin/at now`; 

Заменить «/ путь/к/файлу - -args с командой, которую вы хотите запустить. Команда «at» использует вашего демона cron для планирования задач.