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

高洛峰
发布: 2016-11-30 10:22:12
原创
1047人浏览过

复制代码 代码如下: 
zuojiankuohaophpcn?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); 



代码小浣熊
代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51
查看详情 代码小浣熊
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号