читатель командной строки php - PullRequest
3 голосов
/ 26 января 2012

Так что я хочу иметь возможность делать следующее в PHP.Из командной строки я вызываю скрипт.

 /usr/bin/php mychildren.php

Я хочу, чтобы скрипт мог создавать 2 дочерних процесса, оба из которых остаются активными бесконечно долго.(скажем, мы делаем их бесконечными циклами = D), но я хочу, чтобы дочерние процессы периодически отображали привет для 1-го процесса и до свидания для второго процесса.И затем, когда я выполняю прерывание сигнала (ctrl + c) с помощью pcntl_signal, я могу затем убить 2 дочерних процесса, и как только я получу подтверждение, что они уничтожены, я убью родительский процесс.

Возможно ли это вообще?!Я немного посмотрел потоковую передачу, и я очень озадачен тем, как заставить это работать.Кажется, что это должно работать, но я не могу заставить что-либо работать должным образом.

Быстрые детали: 2 дочерних процесса каждый дочерний процесс иногда выдает что-то случайное, когда я убиваю родителя, дети умирают, и как только они умираюттогда родитель умирает

1 Ответ

1 голос
/ 26 января 2012

Хотя вы можете использовать pcntl_fork для создания подпроцессов, часто лучше выполнять подпроцессы заново с помощью proc_open.Используйте pcntl_signal для установки обработчиков сигналов (для уничтожения подпроцессов).Если вы хотите, чтобы дочерние процессы выполняли прямую запись в один и тот же вывод, вам нужно будет реализовать какой-то IPC, чтобы избежать одновременной записи в обоих случаях.

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

...