有人告诉我,如果我想使用predis-async,那么我将使用某种异步Web框架(可能使用https://github.com/reactphp/react构建)。我目前正在使用Yii。
我也被告知
$client->getEventLoop()->run();
该行将启动事件循环,在终止与Redis的所有连接并调用所有回调之后,该循环不会返回。这意味着此行将阻止您的代码。尝试运行以下代码(说明Predis异步使用的最简单代码):
$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作为lib。这意味着现有的PHP系统不需要在ReactPHP上。我使用predis异步的想法类似于使用mongodb异步 承诺。当PHP调用mongodb lib来提交写操作时,它就是 异步。 Mongodb立即返回呼叫而不是等待 写入首先发生。在这种情况下,mongodb不需要 异步php框架。
是真的吗?
END可能不会显示很长时间,也可能永远不会显示,但是 可以肯定,使用非Async需要多个操作 Predis。