为什么要创建一个守护进程而不是命令行工具?

时间:2013-07-05 14:23:19

标签: php c api daemon command-line-tool

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

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

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

4 个答案:

答案 0 :(得分:0)

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

如果你只是想要一个程序进行快速系统调用并返回结果,那么实际上没有理由将它作为守护进程,除非它应该被用作多个“客户端”可以连接的服务器程序。请求此系统调用。

答案 1 :(得分:0)

守护进程通常是后台进程,因此如果您希望程序在后台进行监视(例如,报告日志文件大小在最后一小时每5分钟增加一次),然后在有人观看网页时报告结果,deamon是正确的选择。

如果您想要立即执行某些操作(例如,报告当前日志文件大小),则可以更轻松地创建和维护命令行工具。

答案 2 :(得分:0)

作为旁注:您还可以编写一个php C ++扩展来调用OS特定的函数。

一个工具执行操作X.(例如转换文件),如果它快速而快速,则不需要编写守护程序。当你需要同步写作/阅读或排队时,守护进程经常会发挥作用。

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

答案 3 :(得分:0)

Deamon是一个始终在后台运行的进程。 Deamons用于
循环任务执行,如监视进程或数据更改等。命令行工具是一个只有在需要时才能执行的程序。所以我的解决方案是使用cmd工具,因为:

  1. Deamon总是在记忆中运行
  2. 如果deamon崩溃谁将负责重新启动它?
  3. 您必须实施同步请求控制
  4. 所以我的意见是cmd工具。但如果你想要某种deamon表现,还有其他选择。如果你需要重复运行php脚本或cmd工具,请使用linux下的cron或windows下的调度程序