当前位置:  开发笔记 > 编程语言 > 正文

将PHP用作守护进程是明智的吗?

如何解决《将PHP用作守护进程是明智的吗?》经验,为你挑选了4个好方法。

我希望创建一个后台进程,我被告知这些通常用C或类似的东西编写.我最近发现PHP可以用来创建一个守护进程,我希望得到一些建议,如果我应该以这种方式使用PHP.

这是我对守护进程的要求.

连续检查是否已将行添加到MySQL数据库表中

对从数据库中检索到的内容运行FFmpeg命令

将输出插入MySQL表

我不确定我能提供什么来帮助做出这个决定.只是补充一下,我之前没有做过C.只有Java和PHP以及基本的bash脚本.

它甚至会产生很大的性能差异吗?

请允许我的无知,我正在学习!:)

谢谢大家



1> Tim Post..:

正如其他人所说,各种版本的PHP都有垃圾收集器的问题.当然,如果您知道您的版本没有此类问题,则可以消除该问题.关键是,你知道(肯定),直到你编写守护进程并通过valgrind运行它,看看安装的PHP是否在任何给定的机器上泄漏.所以在这一方面,你可以写它只是为了发现Zend认为修复的东西可能仍然是错误的,或者你正在处理稍微旧版本的PHP或某些扩展.恶心.

另一个问题是有些错误的信号.根据我的经验,信号处理程序并不总是用PHP正确输入,特别是当信号排队而不是合并时.这对您来说可能不是问题,即如果您只需要处理SIGINT/SIGUSR1/SIGUSR2/SIGHUP.

所以,我建议:

如果守护进程很简单,请继续使用PHP.如果看起来它会变得相当复杂,或者分配大量内存,你可以考虑在用PHP进行原型设计之后用C语言编写它.

我是一个非常死的C人.但是,我认为用PHP快速敲击一些东西是没有错的(除了我解释过的情况).我也发现使用PHP来构建可能会或可能不会在C中重写的东西也没有错.例如,如果使用PHP,处理数据库的东西会更简单,而不是使用C中的其他接口来管理回调.所以在那个例子,对于'一次性',你一定会更快地完成它.



2> Dominic Sche..:

我倾向于使用cron作业执行此任务,而不是在守护程序中轮询数据库.

你的FFmpeg命令可能需要一段时间才能完成,对吧?在这种情况下,是否真的有必要不断轮询数据库?每一分钟(或每五分钟,十分钟或二十分钟)运行的cronjob不是一个更简单的方法来实现同样的事情吗?


取决于活动水平.启动流程比在单个流程中运行计时器要重得多,而且如果太频繁,则需要添加逻辑来处理多个作业.在任何情况下,cron作业都需要复制轮询逻辑.

3> SingleNegati..:

对于这种事物而言,Php并不比任何其他常见的脚本语言更好或更差.它可以完全访问您执行此类工作所需的所有系统调用和库实用程序.如果您最熟悉使用PHP编写脚本,那么php将为您完成这项工作.

唯一的缺点是php并不像perl或python那样无处不在,它几乎安装在unix的每一种风格上.Php只能在将要提供动态Web内容的系统上找到.并不是说Php解释器的安装太大或太昂贵,但是如果你最关心的是让你的程序进入许多系统,那可能是一个小障碍.


是的,但不是默认情况下经常安装的.

4> dkretz..:

我会反对并建议你尝试php守护进程.这显然是你认识最好的语言.在任何情况下,您都可能会使用计时器,因此您可以在数据库上复制查询频率.只要你没有天真地循环查询,就没有任何惩罚.

如果它不经常执行,你可以从cron运行php,让你的代码排空队列然后死掉.

但是,不要害怕坚持你最了解的东西,作为第一个近似值.

尽量不要使用触发器.它们会产生不必要的耦合,测试和调试它们并不好玩.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有