在正在运行的PHP脚本之间传递数据
对于多个正在运行的PHP脚本(10到100)进行通信,什么是最少的内存密集型解决方案?在正在运行的PHP脚本之间传递数据
- 共享内存:
- 监视器更改
- 保持运行的查询在DB检查新数据
其他技术我听说过,但从来没有尝试过的平面文件(APC或核心功能)
- 消息队列(Active MQ和公司)
一般来说,基于共享内存的解决方案将是最快的,并且在大多数情况下开销最小。如果你可以使用它,那就做吧。
消息队列我不太了解,但是当选择在数据库和平面文件之间时,由于并发问题,我会选择数据库。
您必须锁定的文件才能添加一行,可能导致其他脚本无法写入其消息。
在基于数据库的解决方案中,您可以使用每条消息的一条记录。该记录将包含一个唯一的ID,收件人和消息。收件人脚本可以轻松地轮询新邮件,并在阅读后快速安全地删除相关记录。
非常感谢!我正在寻找答案,是的,我更喜欢数据库而不是共享内存,因为数据会持续发生在机器上。 – 2010-02-20 14:13:14
@Jeremy:你到底在找什么? :) – 2010-02-20 14:47:07
这是很难不知道回答:
- 他们有多少数据将每条消息(2个字节或4兆字节)的发送?
- 他们会在同一台机器上运行吗? (这看起来像是的,否则你不会考虑共享内存)
- 什么是性能要求(每分钟一个消息或每秒一个消息)?
- 什么资源对你最重要?
等等......
使用DB可能是最容易在PHP环境设置和,取决于有多少每分钟的查询和这些查询的类型,这可能确实是sanest解。我个人会先尝试一下,然后看看它是不够的。
但是,如果没有关于应用程序的更多信息,再次难以确定。
有多少个脚本?只是一对或很多很多? – Joelio 2010-02-20 13:26:52
10到100个脚本? – 2010-02-20 13:27:23
什么是OS /平台?你提出的建议是IPC(进程间通信),它的设施根据实际运行的PHP而有很大的不同。 – 2010-02-20 13:41:19