php - 是否应该重用现有的 ReactPHP 循环?
问题描述
应该将单个 ReactPHP 循环用于多种用途,如下所示,还是应该为每个用途创建和使用一个新循环?如果重复使用,循环显然已经在运行,那么如何确保它在完全配置之前不会被无意执行,例如我的process
示例(即在$process->start($loop)
and之间$process->stdout->on(...)
)?
<?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();
解决方案
您应该只使用一个循环并在您的应用程序中共享它。我总是做的是首先确保一切都设置好,然后开始循环。例如,您可以使用 PSR-14 定义的事件调度程序来执行此操作。
推荐阅读
- python - Python - 如何解压缩数据框中的元组列表
- ionic-framework - PWA 中的 build/main.js 包含所有源代码!!如何保护我的 PWA?
- sqlite - 如何在 SQLite 脚本中访问多个数据库?
- windows - 将 SIGINT 发送到 IntelliJ 中正在运行的程序
- machine-learning - 为训练实例分配特定权重的策略
- ruby-on-rails - 如何将 javascript 变量从 Rails 视图传递到操作
- python - Python 正则表达式:计算和替换数值
- c# - 如何实现序列的约束改组
- html - 如何在绝对位置将一个元素调整为另一个元素?
- python - 使用 Python 将 Oracle BLOB 写入 CSV 时出错