在服务器(Linux)中运行两个进程,它们是PHPApp和C++应用程序。PHPAPP是用PHP编写的,C++应用程序是用C++编写的。
现在,他们需要相互通信来执行下面的任务:PHPAPP向C++应用程序发送一个请求,当C++应用程序接收到请求时,它从共享内存读取数据并进行一些计算,最后将数据返回到PHPAPP。
上面有两种方法:
PHPAPP通过套接字与C++应用程序通信。C++应用程序将作为守护进程。
PHPAPP通过调用Excel(…)与C++应用程序通信(PHP具有这样的功能)。除非有来自PHPAPP的请求,否则没有C++应用程序进程,这样每个请求都需要一个C++应用程序实例。
我想知道哪种方法更有效?
更新
PHPAPP是基于Apache的服务器软件的一部分,因此可能有数百个PHPAP进程向C++应用程序发送请求。PHPApp并行地发出请求。

最佳答案

这完全取决于你想做什么。如果C++应用程序工作得像一个函数,因此输入-> C++ +APP>输出,并且不经常调用,那么只需调用Excel并生成它就有意义了。
另一方面,如果C++应用程序必须服务于每分钟的大量请求,而且并行,那么将它构建为可以异步处理所有请求的守护进程更有意义。(boost::asio可以在这里帮助您)
为什么?因为a)通过套接字的通信比每次和B生成新进程要便宜,因为我们假设您有10个000个同时请求,那么Excel方法将产生10000次C++应用程序。你可以想象这最终会吞噬你所有的记忆。在守护进程方法中,您将只有10000个套接字连接,boost::asio可以处理这些连接而不会出现任何问题。
但是要小心,异步方法肯定需要很好的工程。您需要以一种方式编写它,这样就不会有任何请求阻塞另一个请求,这可能会变得非常困难。所以我也会考虑这个。

关于php - 哪种沟通方式更有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23108058/

10-11 15:39