Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器使用脱机脚本发送事件_Javascript_Php_Post_Server Sent Events - Fatal编程技术网

Javascript 服务器使用脱机脚本发送事件

Javascript 服务器使用脱机脚本发送事件,javascript,php,post,server-sent-events,Javascript,Php,Post,Server Sent Events,我有一个简单的数据流,工作原理如下: 客户端注册到事件创建者服务器, 第三方向服务器发出post请求, 然后服务器向其所有侦听器(即客户端)发送一个事件 要发送事件,我想我会使用服务器发送的事件,但我遇到了问题,因为发送事件的脚本并非始终在运行,因此任何试图连接到事件的人都会继续尝试连接,但什么也得不到,当第三方发布帖子时,没有人注册运行脚本的事件 如何始终保持脚本运行?如果我这样做,这不会导致资源泄漏吗 有没有一种方法可以让您注册未来脚本将创建的任何事件?基本上,您需要将此视为两个完全独立的问

我有一个简单的数据流,工作原理如下:

客户端注册到事件创建者服务器, 第三方向服务器发出post请求, 然后服务器向其所有侦听器(即客户端)发送一个事件

要发送事件,我想我会使用服务器发送的事件,但我遇到了问题,因为发送事件的脚本并非始终在运行,因此任何试图连接到事件的人都会继续尝试连接,但什么也得不到,当第三方发布帖子时,没有人注册运行脚本的事件

如何始终保持脚本运行?如果我这样做,这不会导致资源泄漏吗


有没有一种方法可以让您注册未来脚本将创建的任何事件?

基本上,您需要将此视为两个完全独立的问题:

如何将事件发布到订阅者通知队列中 如何向订阅的客户端发送近即时通知 让我们从2开始

有很多方法可以解决这个非常常见的问题,其中很多都有依赖性。如果您在根级别上控制服务器,您可以从多个级别中进行选择,但是如果您希望在任何低成本的PHP环境中都可以承载此功能,我建议您将轮询作为一种稍微陈旧的、易于理解的技术:您的客户机是否通过AJAX轮询服务器,以及服务器端轮询脚本监视服务器上的事件。只有在30-120秒之后才能从脚本返回,以保持在超时内,同时可能会发送一些占位符。如果发生事件,请立即返回事件

这就解决了脚本持续运行的问题:客户机让它保持运行

假设你有这个,1。似乎很简单:将事件发布到中心队列,例如数据库,并通过SHM或文件删除等方式启动轮询器