1

我知道这对于大多数 IT 人群来说似乎是一个非常愚蠢的问题,但我是设计这种架构的新手(之前只在 PHP 中开发过)。

我正在构建一个使用特定操作系统功能的应用程序。最终用户将调用一个 PHP 脚本,而该脚本又需要调用一个 C 程序。后者将调用 OS API 并以字符串和指向 PHP 脚本的文件指针的形式返回结果。

现在,我知道我可以选择将这个 C 程序部署为命令行工具或守护程序。为什么我应该选择一个而不是另一个?

4

4 回答 4

1

守护程序是在计算机启动时启动并一直运行直到计算机关闭的程序。例如,像 Apache Web 服务器这样的服务器程序就是一个守护进程。

如果您只想要一个执行快速系统调用并返回结果的程序,则实际上没有理由将其用作守护程序,除非它应该用作多个“客户端”可以连接并请求该系统的服务器程序称呼。

于 2013-07-05T14:28:11.530 回答
1

守护进程通常是一个后台进程,因此如果您希望您的程序位于后台并监视某些内容(例如,报告日志文件大小在过去一小时每 5 分钟增加一次),然后在有人观看网页时报告结果,则可以使用守护进程是正确的选择。

如果您想要做一些可以立即完成的事情(例如报告当前日志文件大小),命令行工具更容易创建和维护。

于 2013-07-05T14:32:44.870 回答
1

附带说明:您还可以编写一个 php C++ 扩展来调用特定于操作系统的函数。

工具执行 X 操作。(例如转换文件),如果它快速且快速,则不需要编写守护程序。当您需要同步写入/读取或排队时,守护程序通常会发挥作用。

如今,编写守护程序来包装命令行命令的一种简单而流行的方法是 nodejs,例如,请参见此处:http: //blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever

于 2013-07-05T14:33:45.687 回答
0

守护进程是一个始终在内存中后台运行的进程。守护进程用于
执行重复性任务,例如监视流程或数据更改等。命令行工具是仅在您需要时才可以执行的程序。所以我的解决方案是使用 cmd 工具,因为:

  1. 守护进程总是在内存中运行
  2. 如果守护进程崩溃,谁将负责重新启动它?
  3. 您必须实现同时请求控制

所以我的观点是 cmd 工具。但是,如果您想要某种守护进程的行为,还有其他选择。如果需要重复运行 php 脚本或 cmd 工具,请使用 linux 下的 cron 或 windows 下的 scheduler

于 2013-07-05T14:33:51.887 回答