0

index.php は Apache によって解析されます。一部のデータを別の PHP インスタンスに渡す必要がありますが、これはたまたま reactphp ループです。これをどのように達成するのが最善でしょうか? 両方のスクリプトが同じマシンで実行されます。

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

3 に答える 3

0

ある種のプロセス間通信が必要です。

(もちろん) IPC でそれを行うことができます。共有メモリを使用しています。または、パフォーマンスがわずかに低下しますが、RAM ディスク上の一時ファイルまたは一時ファイル システムを使用して、管理性が向上します。もちろん、IPC はセマフォされたリソースを待機する機能も提供します。これは便利で応答性を向上させる可能性があります (reactphp プロセスでソケットまたは完全な HTTP サーバーを開くことで同じことができます)。

外部アプリケーション (*MQ や Redis など) を利用してこれを行うこともできます。

MySQL などのデータベースがある場合、共有テーブルを介して 2 つのプロセスを「通信」させることができます。

于 2017-01-06T21:39:35.000 に答える
0

いくつかのオプション:

  1. 2 つのプロセス間の HTTP

    あなたが言うように、これは少し面倒ですが、それほど悪くはありません。迅速ですが、少し面倒です。

  2. Unix ソケット ファイル

    唯一の問題はreactphp、現時点では unix ソケットでは機能しないことです。

    詳細: https://github.com/reactphp/socket/pull/17

  3. TCP ソケット

    これはうまくいくはずです。しかし、最初のオプションと同じくらい不格好です。

正直に言うと、php の限界に達しているように思えます。

Node.js

使用したことがあるかどうかはわかりませんがnode.js、この種のタスク用に作成されました。また、php にはない多くの機能を使用できます。

https://nodejs.org/en/

于 2017-01-06T21:52:29.790 に答える
0

前述LSemiのように、共有メモリを使用してそれを行うことができます。または、基本的に既に WebSocket サーバーを取得しています。PHP WebSocket クライアント ライブラリで応答を取得してみませんか?

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

于 2017-01-06T21:55:51.257 に答える