php - C++ 中的 Linux 守护进程处理 PHP 请求

标签 php c++ linux sockets

操作系统: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

一些选项:

  1. 将应用程序特定部分编写为 PHP 页面,然后使用curl 通过 HTTP 请求调用它

  2. 将服务器编写为单任务 stdio 服务器并使用 [x]inetd 调用它,将客户端连接作为网络套接字处理(需要您定义协议(protocol))

  3. 编写一个 fork server daemon在 PHP 中将两端的连接作为网络套接字处理(需要您定义协议(protocol))

  4. 写一个单线程server daemon ( using socket_select ) 在 PHP 中将两端的连接作为网络套接字处理(需要您定义协议(protocol))

当然,在我上面提到的 PHP 中,您同样可以使用 C、C++、Perl、Java...等。

关于php - C++ 中的 Linux 守护进程处理 PHP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133842/

相关文章:

c++ - 一组没有更新的整数的完美哈希函数

纯 C 中的并发编程 - Windows/Linux

linux - 从已经运行的进程中获取 OutputStream

php - 这是封装吗?

C++决定开关中变量的类型

PHP MySQL 身份验证错误

c++ - 使用 g++、bison 和 flex 进行编译时,yyparse() 中未定义对 `yylex' 的引用

linux - Linux 中 GetProcessIoCounters 的等价物是什么?

php - PHP 分布式开发的最佳实践

php - 从查询中提取数据并将其插入同一表错误的列中