#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, который инкапсулирует эту функциональность; хотя для вашего случая это немного перебор.)