асинхронный — передача данных между различными экземплярами PHP

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';
});

0

Решение

Несколько вариантов:

  1. HTTP между двумя процессами

    Как вы говорите, это немного грязно, не так уж плохо, это будет быстро, но немного грязно.

  2. Unix сокет файл

    Единственная проблема reactphp не работает с сокетами Unix в данный момент.

    Больше информации: https://github.com/reactphp/socket/pull/17

  3. TCP Socket

    Это должно работать. Но так же неуклюже, как 1-й вариант.

Если честно, это звучит так, как будто вы попали в пределы php.

Node.js

Я не уверен, что вы когда-либо использовали это, но node.js был сделан для такого рода задач. И позволяет много функциональности php нет.

https://nodejs.org/en/

0

Другие решения

Вам нужна какая-то межпроцессная коммуникация.

Вы можете сделать это с помощью IPC (конечно); используя общую память. Или с немного худшими характеристиками, но ИМХО лучше управляемость, используя временный файл на RAM-диске или временную файловую систему. Конечно, IPC также дает вам возможность ожидания на семафорных ресурсах, что может пригодиться и улучшить скорость отклика (вы можете получить то же самое, открыв сокет или полный HTTP-сервер в процессе реагирования на запросы).

Вы также можете сделать это, используя внешние приложения (например, некоторые * MQ или Redis).

Если у вас есть база данных, такая как MySQL, вы можете заставить два процесса «общаться» через общую таблицу.

0

Как LSemi Я сказал, что вы можете сделать это с помощью разделяемой памяти или, по сути, у вас уже есть сервер WebSocket. Почему вы не получаете ответы с помощью библиотеки PHP WebSocket Client?

https://github.com/Textalk/websocket-php

0