基于事件的mysql for php socket?

时间:2011-12-13 22:22:31

标签: php javascript mysql sockets

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

PHP中基于事件的体系结构众所周知难以实现,但由于存在许多限制,至少可以说,这不是最好的语言。你最好在Node.js或其他一些本身就是事件驱动的语言/环境中做这件事。

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

话虽如此,如果你决定用PHP创建套接字服务器,这可以做到,尽管有点可怕。基本流程将是这样的:

  • Have a MySQL trigger that calls an external program through something like sys_exec()
  • 它调用的外部程序(这可能是一个PHP脚本)连接到正在运行的套接字服务器,通过你想要的任何方式,可能是套接字连接,可能是共享内存,也许是完全像POSIX信号的东西,并通知新行的socket服务器进程。
  • 套接字服务器现在可以运行SELECT(或者不是,也许你可以从上面的脚本传递你需要的任何数据)并做你需要处理的数据,并将数据推送到客户端。