是否应该重用现有的ReactPHP循环?

时间:2019-06-12 12:51:50

标签: php asynchronous event-driven reactphp

应该将单个ReactPHP循环用于多种用途,如下所示,还是应该创建一个新的循环并将其用于每种用途?如果重用,则该循环显然已经在运行,那么如何确保在完整配置之前(如在我的process示例中(即在$process->start($loop)$process->stdout->on(...)之间),不会无意地执行该循环? / p>

<?php

$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server('127.0.0.1:8080', $loop);

$socket->on('connection', function (React\Socket\ConnectionInterface $connection) use($loop) {
    $connection->on('data', function ($data) use ($connection, $loop) {

        $loop->addTimer(10, function() {
            syslog(LOG_INFO, 'Do something upon non-repeating timer completion');
        });

        $process = new \React\ChildProcess\Process($cmd);
        $process->start($loop);
        $process->stdout->on('data', function ($chunk) {
            syslog(LOG_INFO, 'Do something with $chunk');
        });

    });
});

$loop->run();

1 个答案:

答案 0 :(得分:0)

您应该只使用一个循环并在您的应用程序中共享它。我一直要做的是首先确保一切都已设置好,然后开始循环。例如,您可以使用事件调度程序(例如PSR-14定义)来执行此操作。