【问题标题】:Passing data between running PHP scripts在运行的 PHP 脚本之间传递数据
【发布时间】:2011-01-19 03:03:09
【问题描述】:

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

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

我听说过但从未尝试过的其他技术:

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

【问题讨论】:

  • 多少个脚本?只有几个还是很多很多?
  • 在什么操作系统/平台上?您的问题表明 IPC(进程间通信),其设施因实际运行 PHP 的内容而异。

标签: php database memory scripting


【解决方案1】:

一般来说,在大多数情况下,基于共享内存的解决方案将是最快的并且开销最小。能用就用吧。

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

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

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

【讨论】:

  • 非常感谢!正是我正在寻找的答案,是的,我更喜欢数据库而不是共享内存,因为无论机器发生什么,数据都会持续存在。
  • @Jeremy:你到底在找什么? :)
【解决方案2】:

这很难在不知道的情况下回答:

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

等等……

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

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

【讨论】:

    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2023-04-10
    • 2011-08-06
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多