PHP运行后台任务,然后通知正确的客户端

PHP运行后台任务,然后通知正确的客户端,php,background,long-polling,Php,Background,Long Polling,在询问之前,我曾尝试使用谷歌搜索,但我无法理解php是否可以实现以下场景: -运行立即返回给用户的脚本。它的工作是在后台运行一个长任务 -即使用户已浏览同一域/web应用程序上的其他页面,也应在完成时通知正确的浏览器客户端 我可以用php来做吗? 我可以使用node.js这样的框架吗? 或者使用长轮询之类的技术(我对此不太了解)。 或者 我在寻找能让我走上正轨的人 非常感谢是的,这是可能的 您可以通过jQuery/JavaScript和PHP的组合来实现 例如,在数据库中有一行名为Notific

在询问之前,我曾尝试使用谷歌搜索,但我无法理解php是否可以实现以下场景: -运行立即返回给用户的脚本。它的工作是在后台运行一个长任务 -即使用户已浏览同一域/web应用程序上的其他页面,也应在完成时通知正确的浏览器客户端

我可以用php来做吗? 我可以使用node.js这样的框架吗? 或者使用长轮询之类的技术(我对此不太了解)。 或者

我在寻找能让我走上正轨的人

非常感谢

是的,这是可能的

您可以通过jQuery/JavaScript和PHP的组合来实现

例如,在数据库中有一行名为
NotificationPop
,如果其中有值,您可以作为示例提示用户


无论如何,这是一个相当广泛的问题。只要尝试失败,如果你遇到任何问题,我们很乐意帮助你。

我认为你应该研究WebSocket。它们是实时推送通知或聊天室的幕后推手。基本上,当服务器端发生某些事情(或某个过程完成)时,服务器将“联系”正确的用户(即使他已更改了网页,但仍在同一个域中)。服务器消息的内容完全由您决定。你可以做任何你想做的事。
更多信息(请尝试演示应用):

另外,请阅读本文以了解为什么不应使用定期轮询或长轮询


请注意,为了使用websocket,您需要在服务器上运行websocket服务器。这在共享主机上是不可能的(据我所知),但您需要一个VPS(虚拟专用服务器)。

感谢Kristian有趣的观点。NotificationPop链接到发布作业的用户id。但这样,如果我不在eror中,我需要每隔XX秒在任何页面中执行一个ajax请求。我可能会有性能问题吗?不太可能,Javascript是在客户端运行的,任何一台像样的服务器都可以每隔10-15秒处理任何用户对php的请求。谢谢Igor,但这是一个完整的跨浏览器解决方案?当然可以。基本上,这就是当你收到我的答案时发生的事情。您看到菜单中的红色图标(在页面顶部),带有关于问题新答案的通知。这就是websocket魔术;)此外,许多在线多人网络游戏都使用WebSocket。WebSocket是一个“更专业”的解决方案,持续的ajax轮询是一个“技巧/解决方法”。但是,它们都是有用的,这取决于上下文(=你的项目有多大)WebSocket可以让你用许多专业级的功能转换你的网站/应用程序,这些功能将使你的项目与其他项目区分开来。非常有趣的Igor。但我不明白我需要在基于Linux CentOS Linux 7.1的apache服务器上安装什么?谢谢请记住选择一个答案(如果有任何答案被证明是有用的)