服务器(LINUX)中运行着两个进程,它们是PHPApp和C++App。PHPApp由PHP编写,C++App由C++编写。
现在,它们需要相互通信以执行以下任务: PHPApp向C++App发送请求,当C++App收到请求时,它从共享内存读取数据并进行一些计算,最后将数据返回给PHPApp。
上面有两种方法:
我想知道哪种方法更有效?
更新
PHPApp是基于Apache的服务器软件的一部分,因此可能有数百个PHPApp进程向C++App发送请求。PHPApp并行地提出请求。
发布于 2014-04-16 12:52:42
这完全取决于你想做什么。如果C++App像函数一样工作,因此输入-> C++App ->输出,而不是经常调用,那么只调用exec并生成它就有意义了。
另一方面,如果C++App必须每分钟处理大量请求,同时也要并行处理,那么将其构建为一个能够异步处理所有请求的守护进程就更有意义了。(boost::asio可以在这里帮助您)
为什么?因为( a)通过套接字进行通信比每次生成一个新进程花费更少;( b)因为假设您有10000个同时请求,那么exec方法将产生10000次C++App。你可以想象这最终会吞噬你所有的记忆。在守护进程方法中,您将只有10000个套接字连接,它可以在没有任何问题的情况下处理boost::asio。
但是要小心,异步方法肯定需要很好的工程。您需要以一种方式编写它,这样就不会有任何请求阻止其他请求,这可能会变得非常困难。所以我也会考虑这个问题。
https://stackoverflow.com/questions/23108058
复制相似问题