Linux守护进程在c++中处理PHP请求

Linux Daemon in C++ to process PHP requests

本文关键字:处理 PHP 请求 c++ 守护 进程 Linux      更新时间:2023-10-16

操作系统:Linux(RedHat)编程语言:c++

我需要使用c++为Linux创建一个守护进程(进程),该进程将持续侦听PHP请求的自定义端口。PHP将以XML形式将请求数据发送给守护进程,守护进程将使用Xerces解析XML,并以XML形式将适当的答复发送回PHP页面。

我已经成功地在本地主机上创建了一个监听端口4646的守护进程,但是我不能弄清楚的是PHP的请求将如何进入守护进程以及守护进程将如何发送回复。

我试着用谷歌搜索这个特殊的问题,但根本找不到解决方案。对于这个问题,任何形式的帮助都将是非常感激的。

我也读了一些关于PHP守护进程的知识,但是我不确定它们是否适用于这个特殊的场景。

此方法不是硬性的,所以任何替代方法也可以。唯一困难和快速的是结果,即PHP页面和守护进程之间的成功通信。

问题相当混乱。

我需要使用C/c++为Linux创建一个守护进程(进程)

为什么一定要用C或c++写?

我也读了一些关于PHP守护进程的内容,但我不确定它们是否适用

这是否意味着它不需要用C/++编写?为什么你认为它们可能不适用?

守护进程将使用Xerces解析XML

为什么必须使用Xerces?大概守护进程应该做的不仅仅是解析XML和编写响应——它还做什么?

写守护进程不是一个简单的过程。编写套接字服务器不是一个简单的过程。通过在每端实现一个定义良好的协议,它在某种程度上简化了。

…这就引出了一个问题,为什么不直接使用HTTP作为协议和一个web服务器来实现服务器的东西,并将特定于应用程序的逻辑分离到一个CGI程序中呢?更进一步,为什么不使用PHP实现特定于应用程序的逻辑呢?

唯一困难和快速的是结果,即PHP页面和守护进程之间的成功通信

一些选择:

  1. 将应用程序的特定部分编写为PHP页面,然后使用curl

  2. 通过HTTP请求调用它
  3. 将服务器编写为单任务工作室服务器,并使用[x]inetd来调用它,将客户端连接作为网络套接字处理(要求您定义您的协议)

  4. 在PHP中编写一个分叉服务器守护进程,将两端的连接作为网络套接字处理(要求您定义您的协议)

  5. 在PHP中编写一个单线程服务器守护进程(使用socket_select),将两端的连接作为网络套接字处理(要求您定义您的协议)

当然,在我上面提到PHP的任何地方,您都可以同样使用C, c++, Perl, Java....等

最好使用php套接字库与系统中运行的守护进程连接,然后将数据传递给守护进程并处理守护进程发回的结果。

您可以参考PHP套接字库来创建与守护程序进行套接字连接的代码…

我认为这是一个比使用CURL更好的选择,因为守护进程也是一个自定义套接字接口,CURL将最适合HTTP请求,但我认为这里的守护进程不是一个HTTP .

xinetd/inetd可能有点过时,但可以使这变得简单和可扩展(有限制)

Inetd将调用您的程序并将流量发送到stdin,而您的stdout将进入连接。只要你不需要共享信息,你就不必担心使程序无bug/无内存泄漏等....

西蒙装载机