是否有可能在服務器上運行C++程序並等待PHP進程傳遞參數。然後,C++程序將處理這些參數並將結果返回給PHP。你如何使用PHP與正在運行的C++進程交互?
我一直在搜索網頁,可以看到幾種從PHP運行C++程序的方式,但無法找到與已運行的C++程序進行交互的方式。
我在想的那種C++程序可能需要一些時間來設置,例如,他們創建了某種大數據結構,所以我不想在每次需要時運行它們。我希望C++程序創建它們的數據結構,然後坐下來等待,直到PHP詢問來自該數據結構的信息。
謝謝
是否有可能在服務器上運行C++程序並等待PHP進程傳遞參數。然後,C++程序將處理這些參數並將結果返回給PHP。你如何使用PHP與正在運行的C++進程交互?
我一直在搜索網頁,可以看到幾種從PHP運行C++程序的方式,但無法找到與已運行的C++程序進行交互的方式。
我在想的那種C++程序可能需要一些時間來設置,例如,他們創建了某種大數據結構,所以我不想在每次需要時運行它們。我希望C++程序創建它們的數據結構,然後坐下來等待,直到PHP詢問來自該數據結構的信息。
謝謝
使用命名管道。
和
C++ https://web.archive.org/web/20110926155246/http://ist.marshall.edu/ist480acp/namedpipes.html
我用C++編寫了一些工具,並不想將它們轉換,所以我通過PHP使用命名管道進行通信!好的解決方案 – djTeller 2010-11-10 09:48:22
謝謝大家,謝謝Preet。我一直在尋找命名管道,我認爲他們是我前進的道路。我唯一的問題是,當多個客戶端PHP腳本實例寫入命名管道時,我會遇到問題,因爲我得到多組輸入和輸出而不知道特定輸入的正確輸出是什麼。有沒有辦法只允許一個php實例在任何時候寫入命名管道,並排隊其他實例等待輪到他? – Columbo 2010-11-10 17:17:25
取決於您可以使用隊列的平臺。在Windows上有MS MQ,在Linux上有MQSeries。就我個人而言,我會在管道中的消息(稱爲相關ID)上放置一個標識符。然後當接收到消息時,根據id將消息放在一起,這對PHP進程是唯一的。 – 2010-11-10 20:05:32
寫++聽者識別XML RPC或SOAP請求,所以它可以原生處理請求,並將結果作爲返回PHP是C XML RPC或SOAP響應。
這裏有一些參考:
會像SWIG是對你有用嗎? (http://www.swig.org/Doc1.3/Php.html)你可以打包你想使用的功能,將它暴露給你的PHP代碼。
是否有任何理由不能將數據結構存儲在PHP原生支持的數據庫中? – badgerr 2010-11-10 09:38:46