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

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

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



 v1.1.6若依管理系统
v1.1.6若依管理系统

一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错效率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 您是否在找一套合适后台管理系统。 您是否在找一套代码易读易懂后台

 v1.1.6若依管理系统 885
查看详情  v1.1.6若依管理系统
相关标签:
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号