predis-async を使用する場合は、ある種の非同期 Web フレームワーク (おそらくhttps://github.com/reactphp/reactを使用して構築) を使用すると言われました。現在Yiiを使用しています。
ってことも言われました
$client->getEventLoop()->run();
その行は、Redis へのすべての接続が終了し、すべてのコールバックが呼び出された後に返されないイベント ループを開始します。つまり、この行がコードをブロックすることになります。次のコードを実行してみてください (Predis Async の使用法を示す最も単純なコード):
$client = new Predis\Async\Client('tcp://127.0.0.1:6379');
$client->set('test', 'value');
$client->getEventLoop()->run();
echo 'END';
END はおそらく長い間表示されないか、まったく表示されないでしょうが、非非同期 Predis を使用した同じ操作以上の操作が必要になることは確かです。
ただし、私自身の理解では、既存の PHP システムは、Predis Async を箱から出してすぐにライブラリとして使用できるはずです。つまり、既存の PHP システムは ReactPHP 上にある必要はありません。predis async を使用するという私の考えは、mongodb 非同期コミットを使用することに似ています。PHP が mongodb lib を呼び出して書き込み操作をコミットする場合、それは非同期です。Mongodb は、最初に書き込みが発生するのを待つのではなく、すぐに呼び出しを返します。この場合、mongodb は非同期 php フレームワークも必要としません。
それは本当ですか
END はおそらく長い間表示されないか、まったく表示されないでしょうが、非非同期 Predis を使用した同じ操作以上の操作が必要になることは確かです。