Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
将Node.js(用于实时通知)添加到现有PHP应用程序_Php_Apache_Node.js - Fatal编程技术网

将Node.js(用于实时通知)添加到现有PHP应用程序

将Node.js(用于实时通知)添加到现有PHP应用程序,php,apache,node.js,Php,Apache,Node.js,我有一个现有的PHP应用程序,需要向其中添加实时通知。为了实现这一点,我安装了node.js(打算为所有实时功能添加socket.io) 不过。尽管我花了三个小时研究并试图弄清楚如何将两者结合起来,但我发现自己离理解还差得远 我目前正在使用以下工具: 阿帕奇 PHP Nginx(作为Apache的反向代理,用于所有静态内容,如 图像/css文件等) MySQL 我已经编写了将事件从客户端发送到PHP并将通知插入数据库的代码。当收件人刷新页面时,他们当然会看到通知。我只需要node.js来处理

我有一个现有的PHP应用程序,需要向其中添加实时通知。为了实现这一点,我安装了node.js(打算为所有实时功能添加socket.io)

不过。尽管我花了三个小时研究并试图弄清楚如何将两者结合起来,但我发现自己离理解还差得远

我目前正在使用以下工具:

  • 阿帕奇
  • PHP
  • Nginx(作为Apache的反向代理,用于所有静态内容,如 图像/css文件等)
  • MySQL
我已经编写了将事件从客户端发送到PHP并将通知插入数据库的代码。当收件人刷新页面时,他们当然会看到通知。我只需要node.js来处理实时推送到客户端的操作,但是我不知道如何设置它

在这种情况下,我真正需要知道的是:

  • 给定node.js/websocket与客户端的连接是如何/何时实例化的 我希望所有内容仍然通过Apache/PHP提供
  • 如何从PHP向Node.js发送消息并指示其推送 给客户的通知
  • 为了支持此功能,我需要对设置进行哪些后端修改
  • 最终,我希望能够运行一个PHP函数,并期望node.js/socket.io/websockets将通知推送到客户端。我只是不知道怎么去那里


    提前感谢您提供的示例/信息/指南

    在这个场景中,我要做的是使用设置Node.js服务器。这为您提供了一种跨浏览器的方法,用于向客户端发送近实时数据

    当客户端加载PHP页面时,将有一个
    标记指向Node.js服务器以加载Socket.IO。加载后,Socket.IO JavaScript客户端将连接到Node.js Socket.IO服务器并等待事件发出

    现在,由于希望从PHP发送这些事件,因此需要在PHP应用程序和Node.js之间建立一个通信通道。我推荐这个。基本上,PHP应用程序发布一条消息,订阅该消息的Node.js服务器将接收该消息。然后,这些服务器可以立即将消息传递给客户端,以便从PHP获取更多数据。(我想您会发现,让Node.js服务器首先发送数据可能同样容易。)


    如果您愿意,您可以将Node.js放在您的Nginx服务器后面。

    这个问题很老了,但我在尝试实现websockets时发现了它,因此这可能会帮助其他需要纯PHP解决方案的人,该解决方案可以集成到现有项目中,而无需太多的黑客攻击

    唯一需要的是PHP的zmq绑定,它被用作将数据从PHP脚本传递到websocket服务器的方法。如果您的PHP实例不是用它构建的,那么您可以找到它


    Github回购协议是,有很多例子可以让你继续进行。当客户要求时;2.3.你可以查一下out@SupunKavinda-您的链接对于一般示例很有帮助。问题是它适用于每个连接到php文件的用户。如何将请求发送给不同的用户,而不是所有用户?比如说,进行不止一次的对话。我能够跟踪php上的用户/对话,但是如何将推送通知发送给websocket上正确连接的用户呢?在本例中,节点客户机ID只是整数,是否使它们与$\u会话变量相同?怎么做?@Zackattack您可以使用“通道”。最简单的方法是浏览公司的API文档,看看他们的渠道是如何工作的。您可以在WS-server中实现类似的功能。(这非常简单,您可以通过令牌或会话进行身份验证)。然后,您可以从前端订阅频道。但是,我们不再使用Node.js:我们用PHP编写了WS-server,这要归功于它的出色表现。感谢您的回复,我本来打算使用ratchet,但它似乎比Node js更复杂。我花了几个小时试图实现它,但没走多远。我能够让node js在30m以下工作,没有node js的经验。这听起来很完美,特别是因为我已经在使用Redis构建活动流。关于使用脚本标记的部分就像一个灯泡熄灭一样。正是我想要的。非常感谢。使用Redis作为PHP和Node.js之间的通信通道,您如何看待使用Curl将请求从PHP发送到Node.js应用程序?接下来,在Node.js应用程序中的请求事件中,我们将向连接的套接字发出数据/通知。@user346665这当然是一个选项,但您实际上是在用pub/sub重新发明轮子,然后您必须管理一个上/下服务器列表,并处理您的PHP脚本将挂起的事实(除非您使用multicurl,这对于类似的东西来说确实是一件麻烦事)。但是,如果我们只使用一个节点服务器,这是可行的解决方案吗?@SOuřaanGřg虽然我确实为项目提供咨询服务,但目前我的日程安排中没有任何可用性。此外,Stack Overflow并不是聘请顾问的合适地点。我建议在网站上专门寻找一名顾问,以招聘知识渊博的专家顾问。