PHP编写命令行脚本和后台运行程序的注意事项

在一些场合(如开发,测试), 可能需要使用PHP编写一些命令行的处理脚本,或者是长时间
后台运行的任务, 需要注意以下准则:

准则1. 尽量避免使用PHP编写后台运行程序, 尤其是类似while(true){….} 这种循环的处理脚本.

比如,有时候我们需要定期检查数据库,然后有数据进行处理,没有数据等待.
我强烈建议不要使用PHP编写这样的类似service的脚本. php的gc并不稳定, 当运行到一定时候,
会异常退出. 另外, PHP也不擅长做命令行脚本. 看看Phing, 号称PHP port的Ant, 但是性能
糟糕的一塌糊涂, 远不如使用几个unix工具+shell来的快捷. (更别提windows,那基本是不可用).

使用Perl,Python来完成相应的任务吧, 那会让你很愉快, 或者,Ruby也不错.

准则2 编译特殊版本的php
如果一定要沉迷于PHP解决, 那么首先, 重新编译PHP,去掉所有不实用的模块. 增加PHP的稳定性.

准则3 不要直接使用fork 或者 nohup
不要在PHP中直接使用fork来进入后台运行, 也不要直接使用nohup来运行直接运行php 循环脚本.

准则4 使用 shell guard 来完成PHP的后台循环运行
php的脚本只需要处理一次数据后马上退出,不要使用任何while(true) 这样的脚本来挂起等待.
相反的, 可以使用以下的shell gurad 来完成上述工作:
night9.cn# cat guard.sh
DIR=`pwd`
while true; do
echo “start php script ..”
php $DIR/thumbnail_worker.php
echo “respawn the worker…”

上面这种脚本我称之为shell guard.这样的好处是你的后台脚本永远可以可靠的运行,一旦因为php自身出现问题(如内存溢出),那么马上就可以立即重新执行.
对于检查,执行,休眠模式,可以使用和以下类似的:
while true; do
php ./realtime_data_worker.php
echo “paused 10s”
sleep 10
done

上述shell guard的另一个好处就是一旦你更新了Php文件, 下次运行时就是新的了. 而无须kill掉在重启.
特别适合频繁变更的情况,减少你的工作量.

准则5 可以在你PHP脚本中监控执行的情况, 当执行了一定次数或者内存消耗到一定,则exit, 释放占用的内存,
防止内存泄露.
这条一定要和shell guard来配合.

如果你用windows, 抱歉, 这不在我考虑的范围之内.

准则6 如果以上仍然无法解决一些问题, 那么请参考第一条,使用Perl/Python重写. 立刻会药到病除 ;-)

PS: 某些copy & paste的人儿, 转载我的笔记麻烦给个出处. 我现在知道某些人为何使用我不称我,而使用类似night9.cn认为这样的第三人称说法, 都是某些热衷把转载当自己原创使用的人害得,但每次我看到这样的第三人称总会稀稀拉拉掉一地鸡皮疙瘩.

我写的所有笔记和心得都是自己实践, 主要是为自己备忘使用,都是原创,无须声明.
有时候很纳闷, 转载有必要么?
google可以告诉你一切. 减少点碳排放吧.

转载于:https://www.cnblogs.com/martinjinyu/articles/4019345.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

沃尔沃挖机计算机故障,沃尔沃挖掘机常见故障及原因总结,用户们可以看看

这是一篇关于沃尔沃挖机的常见故障及可能原因的总结送给大家 ,希望能对沃尔沃挖机使用者提供一定的参考借鉴。一、沃尔沃210型挖机热车难启动故障现象:用户平时经常遇到冷车好启动、热车要打好几次才能启动。原因:1.可能是油泵有问题&#xf…

讲座感悟

我于周四、周五上午十点至十二点在山东大学齐鲁软件园校区圆形报告厅聆听了由Prof.Foley主持的精彩讲说,观看了Prof.Foley的最新研究成果以及对Computer Graphics的独到见解,我有如下的体会。 第一:计算机图形学的目标是实现与真实世界的完美…

计算机在材料中的运用结课,计算机在材料科学工程中的应用的结课论文.doc

计算机在材料科学工程中的应用的结课论文《计算机在材料科学与工程中的应用》的结课论文做为一个21世纪的大学生,计算机就显得尤为重要,而我们的本专业是21世纪的新型专业材料科学与工程,那么学好二者就更为重要,在大三我们学校给…

C#生成DLL文件

使用csc命令将.cs文件编译成.dll的过程 很多时候,我们需要将.cs文件单独编译成.dll文件, 操作如下: 打开命令窗口->输入cmd到控制台->cd C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 转到vs.net安装的该目录下->执行csc命令csc /target:library File.cs->在该目…

通过live555实现H264 RTSP直播

前面的文章中介绍了《H264视频通过RTMP流直播》,下面将介绍一下如何将H264实时视频通过RTSP直播。 实现思路是将视频流发送给live555, 由live555来实现H264数据流直播。 视频采集模块通过FIFO队列将H264数据帧发送给live555. live555 在收到客户端的RTSP播放请求后&…

计算机网络设置端口转发,网件NETGEAR几款路由器端口转发功能设置方法

WPN824, RP614v2,MR814v2,WGR614,WGT624 端口转发设置实例。(以 RP614v2 为例)1. WPN824, RP614v2,MR814v2,WGR614,WGT624 如何设置端口转发? 先登陆到设备的配置截面 在‘高级选项(Advanced)’…

计算机分数的简便运算,分数的简便运算和分数的解方程

问题描述:分数的简便运算和分数的解方程简便运算四又十五分之八一又二十分之十三三又四分之一十-二又十二分之七-四又六分之五五又五分之二-(1.8二又四分之九)二又三分之一-1.5三又十二分之五六又十三分之五-2.375-一又八分之五3.825二又九分之四一又九分之五四又三…

OpenGL 4.0 Tutorials 第三章:初始化 OpenGL 4.0

原文地址: http://www.rastertek.com/gl40tut03.html Tutorial 3: Initializing OpenGL 4.0 第三章:初始化 OpenGL 4.0 This tutorial will be the first real introduction to working with OpenGL 4.0. We will address three main things which are …

客户机和服务器在s7通信中各有什么作用,哪些通信口可以进行 Modbus TCP 通讯,作为 Modbus 服务器的 SIMATIC S7 CPU 可以...

以下通信端口可用于 Modbus/TCP 协议:在默认情况下,端口号 502 作为 Modbus 服务器的本地端口。可以在 Modbus 客户机中设置需要的本地端口,通常使用从 2000 开始的端口号。如果通信伙伴具有为服务器设置端口号的功能,那么也可以使…

移位操作符

移位操作符操作运算对象是 位(bit) 它处理的数据类型只能是 整数类型(int) 先大概看一下图,了解它是怎么移动的,下面会解释规则 移位的时候关注两点, 1.移动的方向 2.空缺位置的填补形式. "有符号"左移位操作符(<<) 将二进制数据左移(在低位补0). int i 124…

【OpenGL】详解第一个OpenGL程序

写在前面 OpenGL能做的事情太多了&#xff01;很多程序也看起来很复杂。很多人感觉OpenGL晦涩难懂&#xff0c;原因大多是被OpenGL里面各种语句搞得头大&#xff0c;一会gen一下&#xff0c;一会bind一下&#xff0c;一会又active一下。搞到最后都不知道自己在干嘛&#xff0c;…

基于 Editor.js 开发富文本编辑器库

开始 Editor.js 提供了简单而直观的用户界面&#xff0c;根据需求可以灵活添加自定义的编辑工具&#xff0c;通过插件扩展功能 Editorjs 使用 js 开发&#xff0c;脱离框架依赖&#xff0c;因此可以基于它封装富文本编辑器&#xff0c;用于 Vue 和 React 项目 editor-js-com…

dell服务器从硬盘引导,就是折腾 篇三:戴尔H710 mini(D1版本)阵列卡刷直通模式 附硬盘引导和还原IR模式办法...

就是折腾 篇三&#xff1a;戴尔H710 mini(D1版本)阵列卡刷直通模式 附硬盘引导和还原IR模式办法2021-07-24 10:00:201点赞13收藏12评论首先断开电池&#xff0c;确保阵列卡牢牢插入主板&#xff0c;没有松动。否则可能像我一样启动后识别不了raid卡。经实际测试&#xff0c;机器…

(转)你的团队需要一个领袖,而不是一个主管

作为这个社会的一员&#xff0c;你有你自己想要追随的领袖&#xff0c;他们是一种超人的存在&#xff0c;在各自的领域出类拔萃&#xff0c;拥有强大的人格力量。你不由自主的追随着精神领袖 Steve Jobs、王阳明、默罕默德&#xff1b;音乐领袖崔健、Bruce Springsteen、Michae…

硬件服务器采购指南,硬件组装_服务器采购指南_太平洋电脑网PConline

这个机箱不支持普通大光驱&#xff0c;要用超薄光驱&#xff0c;超薄光驱是不可以直接用IDE数据线连接&#xff0c;必须用一个很小光驱转接卡&#xff0c;当然电源接口是和软驱电源接口通用的。光驱转接板这次我们采用的电源&#xff0c;也比较突出。电源是一个不能马虎的东西&…

ExecuteScalar

ExecuteScalar运行查询&#xff0c;并返回查询所返回的结果集中第一行的第一列或空引用&#xff08;假设结果集为空).忽略其它列或行. 使用 ExecuteScalar 方法从数据库中检索单个值。 由于不用创建行集、查找值并关闭行集&#xff0c;所以产生的系统开销很小与使用 ExecuteRea…

计算机启动软件,计算机软件及应用启动会-20210703001237.pptx-原创力文档

晨操劲舞;业绩播报;昨天--今天--明天;昨天;遇到的困惑;有时我们感觉辛苦、累&#xff01;;入行的初衷;1、为了收入2、为了改变环境与现状3、为了找个事情做4、为了锻炼自己5、为了生存&#xff01; 试一试 ……;忆往昔&#xff0c;峥嵘岁月稠……;今 天;;先往 三只锅里倒入一些…

文件夹没有安全选项-文件上传下载-路径访问被拒绝

在文件的下载和上传中&#xff0c;有时候会出现“路径。。。访问被拒绝”&#xff0c;这是由于权限问题引起&#xff0c;只要给文件所在的文件夹设置权限为everyone就可以解决了&#xff0c;但是有时候文件夹属性没有“安全”选项卡&#xff0c;解决方法如下&#xff1a; 第一种…

css3 背景等比例,纯 CSS,不用背景,实现图片等比例展示

最简单的等比例&#xff1a;div img { max-width:100%; max-height:100%; }如上显示效果是&#xff1a;图片等比例缩放&#xff0c;不变形&#xff1b;图片所有区域都会显示。但是&#xff0c;如上代码有可能会造成横向、纵向白边&#xff0c;当我们在做图片列表时&#xff0c;…

emctl start dbconsole OC4J_dbconsole*** not found

C:\windows\system32>emctl start dbconsole OC4J Configuration issue. D:\app\product\11.1.0\db_1/oc4j/j2ee/OC4J_DBConsole_ghost1_orcl not found. 查看监听状态&#xff0c;环境变量 C:\windows\system32>echo %ORACLE_HOME% D:\app\product\11.1.0\db_1C:\window…