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

时间:2010-02-20 13:20:35

标签: php database memory scripting

对于多个正在运行的PHP脚本(10到100)进行通信,内存密集度最低的解决方案是什么?

  • 监控平面文件以进行更改
  • 继续在数据库上运行查询以检查新数据

我听过的其他技巧,但从未尝试过:

  • 共享内存(APC或核心功能)
  • 消息队列(Active MQ和公司)

2 个答案:

答案 0 :(得分:2)

如果不知道,这很难回答:

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

等等......

使用数据库可能最容易在PHP环境中进行设置,并且根据每分钟查询的数量和这些查询的类型,这可能确实是最安全的解决方案。我个人先试试,然后看看是不够的。

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

答案 1 :(得分:2)

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

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

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

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