2010-02-20 50 views
0

對於多個正在運行的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

回答

2

一般來說,基於共享內存的解決方案將是最快的,並且在大多數情況下開銷最小。如果你可以使用它,那就做吧。

消息隊列我不太瞭解,但是當選擇在數據庫和平面文件之間時,由於併發問題,我會選擇數據庫。

您必須鎖定的文件才能添加一行,可能導致其他腳本無法寫入其消息。

在基於數據庫的解決方案中,您可以使用每條消息的一條記錄。該記錄將包含一個唯一的ID,收件人和消息。收件人腳本可以輕鬆地輪詢新郵件,並在閱讀後快速安全地刪除相關記錄。

+0

非常感謝!我正在尋找答案,是的,我更喜歡數據庫而不是共享內存,因爲數據會持續發生在機器上。 – 2010-02-20 14:13:14

+0

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

2

這是很難不知道回答:

  • 他們有多少數據將每條消息(2個字節或4兆字節)的發送?
  • 他們會在同一臺機器上運行嗎? (這看起來像是的,否則你不會考慮共享內存)
  • 什麼是性能要求(每分鐘一個消息或每秒一個消息)?
  • 什麼資源對你最重要?

等等......

使用DB可能是最容易在PHP環境設置和,取決於有多少每分鐘的查詢和這些查詢的類型,這可能確實是sanest解。我個人會先嚐試一下,然後看看它是不夠的。

但是,如果沒有關於應用程序的更多信息,再次難以確定。