基于事件的mysql for php套接字

Event based mysql for php socket?

本文关键字:mysql for php 套接字 于事件 事件      更新时间:2023-09-26

我有一个web客户端,我在php/html/javascript/jquery编码。我的客户端通过javascript (post)从mysql服务器通过php脚本获取数据。我知道我可以在php-apache-mysql盒子上运行一个php套接字服务器,但是我如何告诉我的套接字服务器,mysql服务器的表上有一个新的记录刚刚发生,而不是每隔X秒检查一次新条目,通过crown job?是否存在"基于事件"的系统?

PHP中基于事件的体系结构是出了名的难以实现,但由于许多限制,至少可以说,它不是实现这类事情的最佳语言。您最好在Node.js或其他本身是事件驱动的语言/环境中这样做。

PHP并不是最好的语言,因为它不能是多线程的,而且你不能自己编写自定义的非阻塞例程——这使你在设计多客户端套接字服务器时处于严重的劣势。

已经说过,如果你决定在PHP中创建你的套接字服务器,这是可以做到的,尽管以一种稍微可怕的方式。基本流程是这样的:

  • 设置一个MySQL触发器,通过sys_exec()
  • 调用外部程序
  • 它调用的外部程序(这可能是一个PHP脚本)连接到正在运行的套接字服务器,通过任何你喜欢的方式,可能是套接字连接,可能是共享内存,可能是其他完全像POSIX信号,并通知套接字服务器进程的新行。
  • 套接字服务器现在可以运行SELECT(或不,也许你从上面的脚本传递任何你需要的数据),做任何你需要做的数据,并将数据推送到客户端。

如果您已经设置了套接字监听器,那么您只需要编辑负责插入新的mysql记录的php脚本,以便在插入成功发生时向套接字发送信号。或许我没理解你的问题?