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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
PHP函数超时处理方法
Feb 14 PHP
php排序算法实例分析
Oct 17 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
thinkPHP框架实现的无限回复评论功能示例
Jun 09 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 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
浅析Yii2中GridView常见操作
2016/04/22 PHP
joomla组件开发入门教程
2016/05/04 PHP
javascript window对象属性整理
2009/10/24 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
护理专业本科生自荐信
2013/10/01 职场文书
国家助学金获奖感言
2014/01/31 职场文书
中秋晚会策划方案
2014/06/12 职场文书
个性发展自我评价2015
2015/03/09 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android