Запуск нескольких процессов из скрипта командной строки PHP

#php #command-line-interface

#php #интерфейс командной строки

Вопрос:

У меня есть пользовательская система сборки, написанная на PHP. Это похоже на инструмент make, собирающий исходные файлы с зависимостями для их компиляции и связывания.

Он использует системную функцию для запуска G , например:

     system("g   -c $file -o $out");
  

Это отлично работает. Однако у меня многоядерный процессор, и я хотел бы использовать эти дополнительные ядра для ускорения процесса (например, make -j 8). Как я могу это сделать на PHP? Мне не нужна многопоточность в PHP как таковая, мне просто нужно запустить несколько дочерних процессов и дождаться их завершения.

Ответ №1:

Поскольку это обычно встроено в версию CLI для PHPs, вы можете использовать pcntl_fork() . Он дублирует текущий PHP-процесс в дочерний, который затем может работать отдельно от родительского процесса.

Смотрите пример на странице руководства.

(Вы также могли бы использовать PEAR System_Daemon, который инкапсулирует эту функциональность; хотя для вашего случая это немного перебор.)