我正在与Symfony一起做一个宠物项目。在其中,我刮擦并解析了一些网站和API的内容(全部供个人使用),然后将所有内容混合在一起。到目前为止,我一直在分开所有不同的检索过程,基本上它是这样的工作:我有一个菜单,每个按钮都会更新一些内容。当我推动它时,加载了一些网站,内容进行了解析,并且我的数据库已更新。这需要一些时间,具体取决于网站的加载时间,解析等。基本上,当我选择更新某些东西时,我将失去控制,并且在所有情况下都没有输出。
。我正在重新思考整个过程,而我看到的方式是一个页面,我按下按钮,并在服务器上建立了"永久"连接。然后,一件事,一切都会更新。这可能需要一些时间(我猜到甚至20分钟),因此服务器通知客户端具有更新,甚至可能需要用户做出选择(我正在连接来自不同来源的数据,并且有一些边缘情况它只是无法自动猜测正确的关系)。
我正在考虑实施此功能的最佳方法。起初,我认为简单的Ajax/jQuery会起作用,但是在我看来,客户端/服务器之间的关系太永久和双向,无法使所有内容保持简单。然后,我考虑了使用流和/或Websocket的工作,但我真的不知道主题。
最好/正确的方法是什么,尤其是在符号上下文中?
我不认为这真的很紧张,您要寻找的是所谓的服务器发送事件。
服务器范围事件(SSE)是浏览器获得的技术 通过HTTP连接从服务器进行自动更新。服务器尺寸 Events Eventsource API被W3C标准化为HTML5的一部分。
对于PHP通常,我通常使用HOA EventSource库,该库使事情变得容易
对于Symfony,您可以拥有一个专用的API端点,该端点将使用此库。