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 相关文章推荐
用PHP制作静态网站的模板框架(三)
Oct 09 PHP
中英文字符串翻转函数
Dec 09 PHP
PHP Google的translate API代码
Dec 10 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
Aug 01 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
PHP SQLite类
2009/05/07 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
JS高级笔记
2011/07/13 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
Python实现购物程序思路及代码
2017/07/24 Python
Python学生信息管理系统修改版
2018/03/13 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
HTML5通用接口详解
2016/06/12 HTML / CSS
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
一套比较完整的软件测试人员面试题
2012/05/13 面试题
2014年纪检部工作总结
2014/11/12 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
政工师工作总结2015
2015/05/26 职场文书
关于保护环境的建议书
2019/06/24 职场文书