簡體   English   中英

哪種溝通方式更有效

[英]Which Way of Communication is More Efficient

服務器(LINUX)中正在運行兩個進程,它們是PHPApp和C ++ App。 PHPApp由PHP編寫,而C ++ App由C ++編寫。

現在他們需要相互通信才能執行以下任務:PHPApp向C ++ App發送請求,當C ++ App收到請求時,它將從共享內存中讀取數據並進行一些計算,最后將數據返回給PHPApp。

上面有兩種方法可以執行:

  1. PHPApp通過套接字與C ++ App通信。 C ++ App將充當守護進程。
  2. PHPApp通過調用exec(...)與C ++ App通信(php具有此功能)。 在沒有來自PHPApp的請求之前,沒有C ++ App進程,以這種方式,每個請求都需要一個C ++ App實例。

我想知道哪種方法更有效?

更新
PHPApp是基於Apache的服務器軟件的一部分,因此可能有數百個PHPApp進程向C ++ App發送請求。 PHPApp並行發出請求。

這完全取決於您要執行的操作。 如果C ++ App像函數一樣工作,因此輸入-> C ++ App->輸出並且不經常被調用,那么僅調用exec並生成它就很有意義。

另一方面,如果C ++ App必須每分鍾同時並行處理大量請求,則將其構建為可以異步處理所有請求的守護程序更為有意義。 (boost :: asio可以在這里為您提供幫助)

為什么? 因為a)通過套接字進行通信比每次生成一個新進程都便宜,並且b)因為可以說您有10,000個並發請求,所以exec方法將生成10,000次C ++ App。 您可以想象,這最終可能會耗盡您的所有記憶。 在守護程序方法中,您只有10,000個套接字連接,boost :: asio可以毫無問題地進行處理。

但是要小心,異步方法肯定需要良好的工程設計。 您需要以某種方式編寫它,以使任何請求都不會阻塞另一個請求,這可能會非常困難。 所以我也會考慮這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM