在正在运行的PHP脚本之间传递数据

问题描述:

对于多个正在运行的PHP脚本(10到100)进行通信,什么是最少的内存密集型解决方案?在正在运行的PHP脚本之间传递数据

  • 共享内存:

    • 监视器更改
    • 保持运行的查询在DB检查新数据

    其他技术我听说过,但从来没有尝试过的平面文件(APC或核心功能)

  • 消息队列(Active MQ和公司)
+0

有多少个脚本?只是一对或很多很多? – Joelio 2010-02-20 13:26:52

+0

10到100个脚本? – 2010-02-20 13:27:23

+0

什么是OS /平台?你提出的建议是IPC(进程间通信),它的设施根据实际运行的PHP而有很大的不同。 – 2010-02-20 13:41:19

一般来说,基于共享内存的解决方案将是最快的,并且在大多数情况下开销最小。如果你可以使用它,那就做吧。

消息队列我不太了解,但是当选择在数据库和平面文件之间时,由于并发问题,我会选择数据库。

您必须锁定的文件才能添加一行,可能导致其他脚本无法写入其消息。

在基于数据库的解决方案中,您可以使用每条消息的一条记录。该记录将包含一个唯一的ID,收件人和消息。收件人脚本可以轻松地轮询新邮件,并在阅读后快速安全地删除相关记录。

+0

非常感谢!我正在寻找答案,是的,我更喜欢数据库而不是共享内存,因为数据会持续发生在机器上。 – 2010-02-20 14:13:14

+0

@Jeremy:你到底在找什么? :) – 2010-02-20 14:47:07

这是很难不知道回答:

  • 他们有多少数据将每条消息(2个字节或4兆字节)的发送?
  • 他们会在同一台机器上运行吗? (这看起来像是的,否则你不会考虑共享内存)
  • 什么是性能要求(每分钟一个消息或每秒一个消息)?
  • 什么资源对你最重要?

等等......

使用DB可能是最容易在PHP环境设置和,取决于有多少每分钟的查询和这些查询的类型,这可能确实是sanest解。我个人会先尝试一下,然后看看它是不够的。

但是,如果没有关于应用程序的更多信息,再次难以确定。