Ну, это немного "хакерски", но вы можете сделать это с помощью сокетов.Это действительно зависит от того, что вы пытаетесь сделать ... Мне действительно интересно, нужна ли вам такая система (а не пытаться упростить процессы там, где им вообще не нужен IPC) ...
Создайте демона "слушателя", который ничего не делает, только принимает соединения с сокетами и помещает их в очередь.Он будет запускать socket_select
в ожидании либо нового соединения, либо данных, которые будут записаны в сокеты.Если данные были записаны, он записывает эти данные во все свои активные соединения, затем закрывает их и начинает заново.Если новое соединение получено, оно помещает его в очередь и затем возвращается к выбору ...
Итак, в вашем «потомке» все, что вам нужно сделать, это подключиться к мастеру, установить блокировку socket_set_block($sock)
, а затем установите время ожидания:
socket_set_option(
$sock,
SOL_SOCKET, // socket level
SO_SNDTIMEO, // timeout option
array(
"sec"=>10, // Timeout in seconds
"usec"=>0 // I assume timeout in microseconds
)
);
Затем просто прочитайте из сокета (socket_read($sock)
).Он будет блокироваться до установленного вами тайм-аута или до тех пор, пока «мастер» не запишет обратно.После прохождения этого вызова, просто закройте сокет и продолжайте делать то, что вы хотите сделать ...