[文章作者:张宴 本文版本:v1.0 最后修改:2007.11.16 转载请注明出处:http://blog.zyan.cc]

  最近遇到一个问题,Linux下的PHP命令行程序作为守护进程,需要从队列文件中读一行数据,通过TCP协议发送给外地的接收服务器,再读下一行数据,再发送。当本地与外地的网络状况不好时,有时候发送一条数据所耗费的时间就较长,累积起来容易造成队列堵塞和延迟。

  于是,我准备用该PHP命令行程序生成多个子进程,将串行处理变成并行处理。最简单的方法就是在PHP中用exec()或popen()函数将一个shell命令行推到后台去执行,例如:
<?php
exec("/bin/sh /opt/zhangyan.sh &");
?>
  最后的&表示将shell脚本推到后台去执行。

  但是这样会有一个问题,如果推到后台的进程太多,可能会导致服务器系统资源耗尽而崩溃,所以必须控制进程数量。



  我写了一个PHP程序(/opt/zhangyan.php)、一个shell程序(/opt/zhangyan.sh)作为测试用例。

  程序的逻辑:
  1、设置/opt/zhangyan.php最多允许生成500个子进程;
  2、当/opt/zhangyan.php读取到一条数据后,将允许生成的子进程数减1(空闲进程数$p_number=500-1=499),然后将数据交给/opt/zhangyan.sh去后台处理,不等待/opt/zhangyan.sh处理结束,继续读取下一条数据;
  3、当允许生成的子进程数减至0时(空闲进程数$p_number=0),/opt/zhangyan.php会等待1秒钟,然后检查后台还有多少个/opt/zhangyan.sh子进程尚未处理结束;
  4、如果1秒钟之后/opt/zhangyan.php发现后台的/opt/zhangyan.sh子进程数还是500(空闲进程数$p_number=0),会继续等待1秒钟,如此反复;
  5、如果/opt/zhangyan.php发现后台尚未处理结束的/opt/zhangyan.sh子进程数减少到300个了(空闲进程数$p_number=500-300=200),那么/opt/zhangyan.php会再往后台推送200个/opt/zhangyan.sh子进程;



/opt/zhangyan.php代码如下:  (/opt/zhangyan.php程序用来模拟从队列文件中读取1000行数据,交给子进程/opt/zhangyan.sh去处理。)



/opt/zhangyan.sh代码如下:  (/opt/zhangyan.sh脚本用来模拟向外地接收服务器发送数据。其中的$(expr $RANDOM % 4 + 1)用来生成1~5之间的随机数,用来使程序暂停1~5秒钟。暂停1秒表示网络状况好,发送数据顺畅;暂停2~6秒表示网络状况不好,发送过程需要1~5秒。)



 执行程序:
/usr/local/php/bin/php /opt/zhangyan.php

 (/usr/local/php/bin/php因PHP解析器所在的路径)

 查看/opt/zhangyan.sh打下的日志文件的第一行和最后一行:
head -n 1 /opt/zhangyan.log
 2007-11-16 07:54:13 http://blog.zyan.cc
tail -n 1 /opt/zhangyan.log
 2007-11-16 07:54:18 http://blog.zyan.cc

  可以看出,500进程并发处理这1000条数据只耗费5秒钟。而按照原来的串行模式,处理每条数据即使只耗费最短的1秒钟,也需要1000秒,约合16分钟才能完成。



 PS:将PHP程序作为Linux守护进程的方法:
nohup /usr/local/php/bin/php /opt/zhangyan.php 2>&1 > /dev/null &

 (nohup命令可以在用户退出终端后仍然执行程序,“2>&1 > /dev/null”表示不显示标准输出和错误输出,最后的&表示推到后台执行。)


Tags: ,
技术大类 » PHP/JS/Shell | 评论(35) | 引用(4) | 阅读(66180)
coach88888888 Email
2012-8-13 17:43
If you desire to go to Coach Factory Outlet, but have no idea in which to go, you can research online. It is no doubt that there is drastically information and details about it for the reference.Coach Factory Online are loved by many people, when you walk in the street, you could see many people take coach styles.hat experts claim Coach Outlet Online shopping is in the changes they are available in.Coach Outlet will send you a coupon in the post to use in their upon only after you type a achieve. The Coach bags are customarily somewhat many than the ones in the stores.
forgaoqiang
2012-8-27 01:52
问题是php脚本有个默认执行时间啊 我记得是30s,如果超时了这个php脚本就会被强制退出吧
ray ban outlet Email Homepage
2012-9-29 09:19
There is a controversary view towards pink sunglasses: the advocates hold the idea that pink sunglasses are funky and wound be a hit in the nearFake Oakley Sunglasseswhile the opponents argue that pink sunglasses are too weird since nobody makes an attempt to make sunglasses in pink. As far as I am concerned, pink sunglasses are acceptable to some extent.First of all, to the innovation phobia, pink is a color that he or she to the least welcomed. So pink ray ban outlet will be in the category that he or she doesn't want to mess with. But just have a second thought about the fancy thing - they are just the change in color of the ordinary sunglasses, so it is not a big deal to fuss about the pink sunglasses and let alone the heated trendy of wearing sunglasses in the such color.
Knit Hats Email Homepage
2013-1-25 10:39
Former Bulldogs Snapback Hats Orson Charles Knit Hats and Ben Jones briefly caught Snapback Hats Sale up when they NBA Snapback Hats
FGWER
2013-1-29 16:58
买轴承就到:www.jkzhoucheng.cn
HWAERFW
2013-3-7 14:43
买轴承就到:www.jkzhoucheng.cn
yatak odası Email Homepage
2013-7-16 20:09
klasik yatak odası modelleri ve yatak odası takımları en uygun fiyatları ile.
磨延城 Email Homepage
2013-10-21 20:58
磨途歌学习了
活下来
2014-5-17 20:57
博主 看了你文章很久了,突然发现我自己什么都不会,大学白学了,你讲的东西 我都不会
wu3a6r7d4a Email Homepage
2014-5-19 13:08
近几年,随着使用价值被大力开发,解毒剂行业飞速发展,资源需求迅猛。然而,由于在农村人们长期使用化肥,使野生资源逐年减少,价格逐年上涨,各大市场每条的收购价格也由原来的几分钱飚升至1.5元以上,出口价更高,且供不应求。现如今的市场现状是资源十分短缺,价格将继续攀升。因此,农研8号土鳖虫养殖技术为农民、下岗职工、打工仔带来了一个百年一遇的理财是另外一种挣钱方式好时机。
武汉中大农研生物技术有限公司以市场为导向,发挥市场机制,提升产业基地的实力和影响力。培育生物农业龙头企业,积极推动建设生物农业园科技产业区、科研孵化区、生物农业培训区。加盟人工养殖周期短,要求低,生长快,产量高,易管理,既可家庭院落养殖,据武汉中大农研生物技术有限公司说,农研8号土鳖虫养殖也可一体化规模养殖,经济效益高。
土鳖虫蛋白质含量高达60%以上,脂肪含量30%,农研8号土鳖虫养殖并且含有16种以上动物生长必须的氨基酸及磷、钾、钠、铝等多种微量元素,被誉为蛋白饲料宝库,是人工养殖全的绝佳饲料,也是人类具有保健功效的上等美食。用其喂养全,可使的繁殖率大大提高。这样既解决了全的饲料问题,又可同时创收,农研8号土鳖虫养殖并促进此项目的可持续发展,可谓一举多得。
农研8号土鳖虫养殖一般一次饲喂可管2—3天,产卵期间基本不用饮食,规模养殖可以人工养殖饵料,自然养殖只需要麦皮,菜叶,瓜果,昆虫,动物内脏,骨粉等,几乎无需成本。土鳖虫适应能力极强,生命力旺盛,不易染病。一般晚上6—8点喂食,业余时间即可养殖。武汉中大农研生物技术有限公司在国家“服务三农,建设新农村”的倡导下,公司秉承一贯的“科技正农,富国利民”的精神,积极创新,经多年论证实践,成功推出土鳖虫新产品。以此为核心竞争力的项目和产品将迅速的垄断同行业市场,并将缔造出新的财富新贵!
农研8号土鳖虫以在国际上运作成熟的加盟、通过公司+基地+养殖户+生化企业连锁模式为客户提供优良品种+技术+销路+广告支持+品牌等全方位服务。它打破了农业单一化的束缚,农研8号土鳖虫养殖使特种养殖、种植、珍禽、十月围城本加工融为一体。实现了成本最低化,利润最大化。
武汉中大农研生物技术有限公司推出一体化土鳖虫养殖模式
易发国际真人娱乐场所
[2014-5-21 05:27]
来源:易发国际
内容: 易发国际出于亚洲著名公司专业提供,易发国际真人娱乐,百家乐,轮盘,骰宝,龙虎,路单,棋牌,游乐场等易发国际精彩娱乐。信用第一值得大众信赖。
易发国际真人娱乐场所
[2014-5-21 07:09]
来源:易发国际
内容: 易发国际出于亚洲著名公司专业提供,易发国际真人娱乐,百家乐,轮盘,骰宝,龙虎,路单,棋牌,游乐场等易发国际精彩娱乐。信用第一值得大众信赖。
易发国际真人娱乐场所
[2014-5-21 07:09]
来源:易发国际
内容: 易发国际出于亚洲著名公司专业提供,易发国际真人娱乐,百家乐,轮盘,骰宝,龙虎,路单,棋牌,游乐场等易发国际精彩娱乐。信用第一值得大众信赖。
易发国际真人娱乐场所
[2014-5-21 07:09]
来源:易发国际
内容: 易发国际出于亚洲著名公司专业提供,易发国际真人娱乐,百家乐,轮盘,骰宝,龙虎,路单,棋牌,游乐场等易发国际精彩娱乐。信用第一值得大众信赖。
klasik mobilya Homepage
2015-3-13 06:19
çelik kapı ve kapı sistemleri üretimi çelik kapı klasik mobilya, avangard mobilya klasik mobilya ambalaj malzemeleri balonlu naylon
顶顶顶 Homepage
2016-1-3 23:09
love 不错 不错 呵呵 呵呵
love
2016-12-5 14:58
zan
wWW
2017-11-8 14:30
uplookuplookunhappyunhappyuplookuplook
分页: 2/2 第一页 上页 1 2 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]