2017-01-06 6 views
0

index.php анализируется Apache. Он должен передать некоторые данные в другой экземпляр PHP, который, случается, является циклом реакцииphp. Как это можно сделать лучше всего? Оба сценария запускаются на одной машине.Передача данных между различными экземплярами 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'; 
}); 
+2

Другой экземпляр PHP? –

+0

@JayBlanchard Как я могу лучше описать это. У меня есть два экземпляра PHP, и данные должны переходить от одного к другому. – user1032531

+0

На другом сервере? В другом разделе? –

ответ

0

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

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

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

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

    Только проблема reactphp не работает с Unix сокетов в минуту.

    Подробнее: https://github.com/reactphp/socket/pull/17

  3. сокета TCP

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

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

Node.js

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

https://nodejs.org/en/

0

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

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

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

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

0

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

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