php获取后台Job管理的实现代码


Posted in PHP onJune 10, 2011
<?php defined('SYSPATH') OR die('No direct access allowed.'); 
class Controller_Jobs extends Controller_Base{ 
public function before(){ 
parent::before(); 
if(Request::$protocol != "cli"){ 
die("Only cli allowed!\n"); 
} 
} 
public function after(){ 
parent::after(); 
//do some cleaning tasks 
} 
private function _execJobCommand($joburi,$paras){ 
$php_exec = Kohana::config("picsou.php_exec"); 
$php_index = APPINDEX; 
$command_args = array(); 
$command_args[] = $php_index; 
$command_args[] = "--uri=".$joburi; 
foreach ($paras as $para => $value){ 
$command_args[] = "--".$para."=".$value; 
} 
//var_dump($command_args);exit; 
echo "exec commmand:".$php_exec."\n"; 
pcntl_exec($php_exec,$command_args); 
} 
/* 
* Running jobs in queues 
*/ 
public function action_run(){ 
$requestCount = 0; 
while(true){ 
$sql = "select * from job_queue where status='1' and approved='1' order by id"; 
$jobs = DB::query(Database::SELECT,$sql)->execute()->as_array(); 
if($jobs){ 
foreach ($jobs as $job){ 
$requestCount ++; 
//update the jobs status as running 
DB::update('job_queue')->set(array('status'=>'2')) 
->where('id','=',$job['id'])->execute(); 
$job_pid = pcntl_fork(); 
if($job_pid == -1){ 
die("Could not fork Child"); 
} else if($job_pid == 0 ){ 
$this->_execJobCommand($job['job_uri'],json_decode($job['paras'],true)); 
echo "finish Child\n"; 
exit(0); 
//run jobs here 
} else{ 
echo "Waiting for job\n"; 
ob_flush(); 
$child_pid = pcntl_waitpid($job_pid,$status, WUNTRACED); 
echo "waitpid end:".$status."\n"; 
if($status == 0){ 
//job completed 
DB::update('job_queue')->set(array('status'=>'999')) 
->where('id','=',$job['id'])->execute(); 
echo "Child Finished\n"; 
ob_flush(); 
}else{ 
DB::update('job_queue')->set(array('status'=>'-1')) 
->where('id','=',$job['id'])->execute(); 
echo "Child Failed\n"; 
ob_flush(); 
} 
} 
} 
} 
else{ 
if($requestCount >=10){ 
echo "Have a rest, I have processed 10 jobs\n"; 
exit; 
} 
//no job to run 
//echo "No job\n"; 
ob_flush(); 
sleep(5); 
} 
} 
} 
}
PHP 相关文章推荐
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
Oct 16 PHP
学习php开源项目的源码指南
Dec 21 PHP
PHP+redis实现添加处理投票的方法
Nov 14 PHP
php调用自己java程序的方法详解
May 13 PHP
基于php判断客户端类型
Oct 14 PHP
Zend Framework数据库操作技巧总结
Feb 18 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
因str_replace导致的注入问题总结
Aug 08 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 #PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 #PHP
PHP网站备份程序代码分享
Jun 10 #PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 #PHP
PHP中遍历stdclass object的实现代码
Jun 09 #PHP
IIS7.X配置PHP运行环境小结
Jun 09 #PHP
php基础学习之变量的使用
Jun 09 #PHP
You might like
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
python threading模块操作多线程介绍
2015/04/08 Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python读取各种文件数据方法解析
2018/12/29 Python
python实现定时发送qq消息
2019/01/18 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
Python提取频域特征知识点浅析
2019/03/04 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
详解Python高阶函数
2020/08/15 Python
python实现自动清理重复文件
2020/08/24 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
高中生职业生涯规划书
2014/02/24 职场文书
母婴店促销方案
2014/03/05 职场文书
农林环境专业求职信
2014/03/13 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书