我正在PHP中開發一個小型服務器守護進程,它將與各種遠程客戶端進行通信 - 非常簡單。然而,運行在同一臺機器上的另一個守護進程需要儘可能快地與第一個進行通信,但可能會不斷髮送數百KB的數據(希望在20 HTZ範圍內)。我非常積極的想要在這兩個守護進程之間使用tcp連接,但這正是我需要一些建議的地方。現在在你問之前,我不能簡單地將它們組合成同一個守護進程的原因是,第二個可以用多種語言之一編寫,包括java,.net,C++,python,ruby等。如果有一種方法爲了使PHP與另一種語言無需使用tcp連接(或使用不適合我需要的系統調用)並且不犧牲性能,我都是耳朵,但我一直在尋找一種方法來做到這一點,我無法真正找到一種乾淨而簡單的方式 - 至少不是一種「適合所有人」的時尚方式。與PHP守護進程交談
回答
由於其他進程將在同一臺機器上,如何使用proc_open()
,那麼你只需寫入/讀取管道(標準輸入/標準輸出等)創建?
太棒了!我會給你一個嘗試..你認爲即使我在單個寫入/讀取操作中說出1MB的數據,這種方法也能正常工作嗎? – Xealgo 2012-03-15 05:57:13
@Xealgo是的,沒問題 - 通過UNIX套接字(管道)進行通信的速度非常快。 – 2012-03-15 07:51:05
您可以使用套接字。 PHP有一個套接字實現:http://www.php.net/manual/en/ref.sockets.php
我只使用C編寫過真正的套接字編程,但您列出的大多數其他語言都應該能夠使用套接字。
在PHP中,您將使用socket_bind()
連接到套接字。同樣,您需要在另一個守護進程上執行相同的操作。
我已經在這工作了一下,但是謝謝你發帖! – Xealgo 2012-03-15 05:55:51
- 1. 與守護進程交談
- 2. 與設備交談的守護程序
- 3. PHP守護進程,並與之交互
- 4. PHP服務(守護進程)
- 5. PHP守護進程腳本
- 6. 管理php守護進程
- 7. 定時器()作爲守護進程與非守護進程
- 8. git守護進程與LFS?
- 9. Emacs守護進程:交換密鑰
- 10. 提交守護進程或服務
- 11. Linux守護進程
- 12. iphone守護進程
- 13. Python守護進程
- 14. perl的守護進程PROC ::守護::初始化與DBI
- 15. Linux守護進程停止啓動 - 停止守護進程
- 16. PHP守護進程/工作環境
- 17. PHP API守護進程在URL
- 18. 瞭解什麼是PHP守護進程
- 19. 從PHP啓動一個守護進程
- 20. Php守護進程經常崩潰
- 21. 如何設置PHP守護進程?
- 22. java守護進程線程
- 23. 使用listen-addr與docker守護進程
- 24. 異步守護進程處理/與Django的ORM交互
- 25. 守護進程結構
- 26. Authlogic&delayed_job&delayed_jobl_mailer&守護進程?
- 27. Windows的Docker守護進程
- 28. FreeBSD的守護進程庫
- 29. 如何守護進程?
- 30. 停止Erlang守護進程
Unix域套接字總是比TCP更快。不要將tcp用於本地通信。 – 2012-03-15 05:45:54