index.php анализируется Apache. Он должен передать некоторые данные другому экземпляру PHP, который оказывается циклом реагирующим. Как это может быть достигнуто лучше всего? Оба сценария выполняются на одном компьютере.
<?php
//index.php
$status=sendDataToOtherInstance('hello'); //blocking function which returns true/false
.
<?php
//reactphp loop
$foo->on('connection', function ($data){
echo($data);
return $data==='hello';
});
Несколько вариантов:
HTTP между двумя процессами
Как вы говорите, это немного грязно, не так уж плохо, это будет быстро, но немного грязно.
Unix сокет файл
Единственная проблема reactphp
не работает с сокетами Unix в данный момент.
Больше информации: https://github.com/reactphp/socket/pull/17
TCP Socket
Это должно работать. Но так же неуклюже, как 1-й вариант.
Если честно, это звучит так, как будто вы попали в пределы php.
Node.js
Я не уверен, что вы когда-либо использовали это, но node.js
был сделан для такого рода задач. И позволяет много функциональности php нет.
Вам нужна какая-то межпроцессная коммуникация.
Вы можете сделать это с помощью IPC (конечно); используя общую память. Или с немного худшими характеристиками, но ИМХО лучше управляемость, используя временный файл на RAM-диске или временную файловую систему. Конечно, IPC также дает вам возможность ожидания на семафорных ресурсах, что может пригодиться и улучшить скорость отклика (вы можете получить то же самое, открыв сокет или полный HTTP-сервер в процессе реагирования на запросы).
Вы также можете сделать это, используя внешние приложения (например, некоторые * MQ или Redis).
Если у вас есть база данных, такая как MySQL, вы можете заставить два процесса «общаться» через общую таблицу.
Как LSemi
Я сказал, что вы можете сделать это с помощью разделяемой памяти или, по сути, у вас уже есть сервер WebSocket. Почему вы не получаете ответы с помощью библиотеки PHP WebSocket Client?