如何在PHP ans JS中的并发会话之间进行通信?

如何在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

我有一个PHP服务器,在这个服务器中,我需要在完成某个客户端B操作时更新客户端A。它通常是如何完成的

我目前的解决办法是:

  • A留下一个打开的
    $.ajax(…).done(函数myCallBack(){…})为这个调用
  • 当A在
    myCallBack(){…}
    中时,它发出另一个
    $.ajax(…).done(函数myCallBack(){…})。这样,与服务器的通信就可以随时接收新信息
  • PHP必须不断检查会话间通信文件,以便在两个并发会话之间传输数据
  • 离开
    $.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 callback
    myCallBack()
    A

    当然,它非常简单,我使用它在进程之间交换状态和数据

    对于使用此技术的其他开发人员:
    我花了这么长时间调试它,是因为我打开了一个会话(
    session\u start()
    ),但没有关闭它(
    session\u write\u close()
    ),这锁定了其他进程并阻止了任何并发

    是的,这就是我在聊天系统中所做的。。。客户端每3秒钟检查一次新消息。关于离开
    $.ajax(…).done(函数myCallBack(){…}),您怎么说打开(并且一直生成新的)是实现这一点的方法吗?我如何在PHP服务器上发出信号,表示会话A为会话B发送了数据?我知道我可以持续监控,但是没有更有效的方法吗?