操作系统:Linux(RedHat) 编程语言:C++
我需要使用 C++ 创建一个 Linux 守护进程(进程),它将持续监听自定义端口上的 PHP 请求。 PHP 将 XML 形式的请求数据发送给守护进程,守护进程将使用 Xerces 解析 XML,并将 XML 形式的适当回复发送回 PHP 页面。
我已经成功创建了一个守护进程,监听本地主机的 4646 端口,但我不知道来自 PHP 的请求将如何发送到守护进程,以及守护进程将如何发回回复。
我尝试用谷歌搜索这个特定问题,但根本找不到解决方案。 对于这个问题的任何形式的帮助将非常感激。
我还阅读了一些有关 PHP 守护进程的内容,但我不确定它们是否适用于这个特定场景。
这种方法并不困难且快速,因此任何替代方法也可以。唯一困难和快速的是结果,即 PHP 页面和守护进程之间的成功通信。
最佳答案
问题比较困惑。
I need to create a daemon(process) for Linux using C/C++
为什么必须用 C 或 C++ 编写?
I have also read a little about PHP daemons, but I'm not sure whether they are applicable
这是否意味着它不需要用 C/++ 编写?为什么您认为它们可能不适用?
the daemon will parse the XML using Xerces
为什么一定要使用Xerces?据推测,守护进程应该做的不仅仅是解析 XML 和撰写响应 - 它还能做什么?
Writing a daemon这不是一个简单的过程。写一个socket server这不是一个简单的过程。通过在每一端实现明确定义的协议(protocol),它在某种程度上得到了简化。
...这就引出了一个问题,为什么不直接使用 HTTP 作为协议(protocol)和网络服务器来实现服务器内容,并将特定于应用程序的逻辑分离到 [f]CGI 程序中。更进一步,为什么不使用 PHP 实现特定于应用程序的逻辑。
The only thing hard and fast is the results i.e succesful communication between the PHP pages and the daemon
一些选项:
将应用程序特定部分编写为 PHP 页面,然后使用curl 通过 HTTP 请求调用它
将服务器编写为单任务 stdio 服务器并使用 [x]inetd 调用它,将客户端连接作为网络套接字处理(需要您定义协议(protocol))
编写一个 fork server daemon在 PHP 中将两端的连接作为网络套接字处理(需要您定义协议(protocol))
写一个单线程server daemon ( using socket_select ) 在 PHP 中将两端的连接作为网络套接字处理(需要您定义协议(protocol))
当然,在我上面提到的 PHP 中,您同样可以使用 C、C++、Perl、Java...等。
关于php - C++ 中的 Linux 守护进程处理 PHP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133842/