2010-08-21 48 views
1

對於最近的項目,我有一個作爲基於CLI的守護程序運行的PHP腳本。這個守護進程將負責監視/控制獨立的工作進程。RPC w/PHP - 與傳輸機制無關

定期地,用戶將通過PHP Web前端(CLI守護進程和前端代碼位於同一物理服務器上)發出管理工作人員的請求。 前端需要對守護進程進行方法調用。

我很困惑如何處理這些「遠程」方法調用。我認爲使用諸如JSON-RPC之類的RPC協議通過標準的UNIX或TCP套接字將是一條可行的路線,但PHP的JSON-RPC,XML-RPC,SOAP等的每個實現似乎都緊密結合在一起HTTP。由於我沒有通過網絡進行通信,所以HTTP是完全沒有必要的。

於是,兩個問題:

  • 爲什麼大多數PHP RPC包耦合到HTTP?
  • 如上所述處理方法調用的最佳方法是什麼?

回答

1

爲什麼大多數PHP RPC軟件包都與HTTP耦合?

這很簡單。 PHP是爲網絡量身定製的。在PHP中編寫CLI應用程序很少見。

爲什麼大多數PHP RPC軟件包都與HTTP耦合?

讓PHP對另一種語言(如Java)運行的程序執行RPC更爲常見,並且這裏有很好的選擇。

對於CLI的PHP程序,我不知道任何開箱即用的解決方案。但應該可以使用UNIX套接字實現自定義解決方案。請參閱sockets extension。請注意,在PHP中不支持多線程支持可能會使這變得更加困難(要處理多個連接,您必須分叉或實現您自己的單線程調度程序...)

0

您仍然可以使用HTTP並連接到本地主機,這不會產生任何網絡流量。我不認爲通過直接使用套接字可以獲得任何真正的優勢,但是如果您真的需要不同的傳輸層,可以使用Ripcord(http://ripcord.googlecode.com/),它允許您指定您的自己的傳輸層類。爲了充分披露,我是Ripcord的作者,所以我可能會有偏見。