我有一个简单的数据流,其工作原理如下:
客户注册活动创建者服务器, 第三方向服务器发出发布请求, 然后服务器向其所有侦听器(客户端)发送一个事件。
发送我认为我会使用服务器发送事件的事件,但是我遇到了问题,因为发送事件的脚本一直没有运行,所以任何试图连接到事件的人都会继续尝试连接和什么都没有,当第三方确实发布帖子时,没有人报名参加运行的脚本事件。
如何让脚本始终保持运行状态?如果我这样做,这不会导致资源泄漏吗?
有没有办法做到这一点,以便您注册“未来”脚本将创建的任何事件?
答案 0 :(得分:0)
基本上你需要把它看作两个完全独立的问题:
让我们从2开始。)
这个非常常见的问题有很多方法,其中很多都有依赖关系。如果您控制服务器(在根级别),您可以从众多服务器中进行选择,但是如果您希望在任何低成本的PHP环境中都可以使用它,我建议您进行长时间的轮询,作为一个有点老化的螺母,易于理解和简单技术:您是否有客户轮询服务器(通过AJAX)和服务器端轮询脚本监视服务器上的事件。只有在30-120秒之后才能从脚本返回以保持超时(同时可能会发送一些占位符)。如果发生事件,请立即返回事件。
这解决了您不断运行的脚本问题:客户端使其保持运行。
假设你有这个,1。看起来很简单:将事件发布到中央队列(例如数据库)并启动轮询器,例如通过SHM或文件删除。