PHP中基于事件的编程

PHP中基于事件的编程,php,while-loop,server-side,long-polling,Php,While Loop,Server Side,Long Polling,我正在尝试使用PHP实现服务器端事件的测试,我发现我无法仅基于变量已更改值的事实向客户端发送消息 到目前为止,我正在使用一个无限while循环来检查变量是否没有改变,但我对这个解决方案不满意,因为它在不断迭代,我相信当许多人使用它时,它会减慢我的服务器的速度。它也可能是DDoS攻击的一个漏洞: $countOld = count($dir); while (count($dir) == $countOld) { sleep(2); } echo "event: ping\n"; echo

我正在尝试使用PHP实现服务器端事件的测试,我发现我无法仅基于变量已更改值的事实向客户端发送消息

到目前为止,我正在使用一个无限while循环来检查变量是否没有改变,但我对这个解决方案不满意,因为它在不断迭代,我相信当许多人使用它时,它会减慢我的服务器的速度。它也可能是DDoS攻击的一个漏洞:

$countOld = count($dir);
while (count($dir) == $countOld) {
    sleep(2);
}
echo "event: ping\n";
echo 'data: {"refresh": "1"}';
echo "\n\n";
ob_flush();
flush();
在没有无限while循环的情况下,有没有办法做到这一点

当变量改变时会发送SSE的东西


所有的帮助都有帮助。

我会考虑使用PUB/SUB,当写文件到那个目录的时候。我也不会为此使用PHP。如果您使用Node.js之类的工具,这种应用程序的灵活性会大大提高。如果使用appserver.io,您可以在PHP中使用基于事件的系统,但这不是一种普遍的解决方案。。。我同意Brad的观点,如果我想要一个基于事件的系统,我宁愿在nodejs中编写代码。至少nodejs有一个更大的宣传:我不确定appserver是否足够稳定。PHP守护进程存在内存泄漏,被认为不稳定,但我不确定它们在当前版本的PHP中的行为。@Brad谢谢,node是另一种选择。我想看看在原生PHP中是否有什么东西可以做到这一点。如果没有问题,也许我会问node.js另一个问题。@HelpingHand如果你选择node.js路线,你可以使用Socket快速启动和运行。IO提供了一个很好的RPC,为不支持web套接字的浏览器提供了备用。你不必为此扔掉你的PHP应用程序。。。您可以同时使用它们。@Brad是SSE Websockets吗?