如何在PHP ans JS中的并发会话之间进行通信?
我有一个PHP服务器,在这个服务器中,我需要在完成某个客户端B操作时更新客户端A。它通常是如何完成的 我目前的解决办法是:如何在PHP ans JS中的并发会话之间进行通信?,php,javascript,jquery,concurrency,ipc,Php,Javascript,Jquery,Concurrency,Ipc,我有一个PHP服务器,在这个服务器中,我需要在完成某个客户端B操作时更新客户端A。它通常是如何完成的 我目前的解决办法是: A留下一个打开的$.ajax(…).done(函数myCallBack(){…})为这个调用 当A在myCallBack(){…}中时,它发出另一个$.ajax(…).done(函数myCallBack(){…})。这样,与服务器的通信就可以随时接收新信息 PHP必须不断检查会话间通信文件,以便在两个并发会话之间传输数据 离开$.ajax(…).done(函数myCallB
$.ajax(…).done(函数myCallBack(){…})代码>为这个调用
myCallBack(){…}
中时,它发出另一个$.ajax(…).done(函数myCallBack(){…})代码>。这样,与服务器的通信就可以随时接收新信息
$.ajax(…).done(函数myCallBack(){…})代码>打开(并且一直生成新的)是这样做的方法吗
对于会话间通信-是否有方法向事件或类似事件发送信号(而不是持续监视某些文件[浪费资源])?客户端a将向服务器发送数据,客户端B需要轮询服务器以请求更改。当发生更改时,客户端B将在下次轮询中获取这些更改。我就是这样解决的:
客户端A留下一个打开的ajax
调用:$.ajax(…).done(函数myCallBack(){…})
:在PHP服务器端(会话),A使用sem\u acquire($semaphore\u A)
锁定信号灯
,然后等待
客户端B使用sem\u remove($semaphore\u A)
删除信号量$semaphore\u A
,从而释放返回客户端JS callbackmyCallBack()
的A
当然,它非常简单,我使用它在进程之间交换状态和数据
对于使用此技术的其他开发人员:
我花了这么长时间调试它,是因为我打开了一个会话(session\u start()
),但没有关闭它(session\u write\u close()
),这锁定了其他进程并阻止了任何并发 是的,这就是我在聊天系统中所做的。。。客户端每3秒钟检查一次新消息。关于离开$.ajax(…).done(函数myCallBack(){…}),您怎么说代码>打开(并且一直生成新的)是实现这一点的方法吗?我如何在PHP服务器上发出信号,表示会话A为会话B发送了数据?我知道我可以持续监控,但是没有更有效的方法吗?