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

复制代码 代码如下:

<?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);
}
}
}
}

时间: 2024-09-22 05:11:19

php获取后台Job管理的实现代码的相关文章

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

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

js实现的后台左侧管理菜单代码_javascript技巧

本文实例讲述了js实现的后台左侧管理菜单代码.分享给大家供大家参考.具体如下: 这是一个完美的后台左侧管理菜单,从样式来说,貌似出自专业人士之手,风格清新,操作实用,用在WEB管理系统中或用在网站后台管理中,最恰当不过了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-left-main-menu-style-codes/ 具体代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Tra

SSH框架 在jsp界面中获取后台request.put的值并进行判断代码书写

问题描述 SSH框架 在jsp界面中获取后台request.put的值并进行判断代码书写 在Action.java中设置了request.put("sql",0); 在jsp界面中通过<%=request.getAttribute("sql")%>来获取 我是想在jsp界面判断該值从而作出不同的操作 故写了 < s:if test="<%=request.getAttribute("sql")%>==0&q

标签-js获取后台数据的具体代码该如何写???

问题描述 js获取后台数据的具体代码该如何写??? 5C 在前端用js去获取后台的图片等一些数据,然后给指定标签赋值,具体的代码该如何写?求大神解答~~~菜鸟求知~~~ 解决方案 /* by y0umer [60min] Function:createXmlHttpRequestobject returm Xmlobject; */ var XmlHttp; function createXmlHttpRequestObject(){ if(window.ActiveXobject){ // 判

JS实现新浪博客左侧的Blog管理菜单效果代码_javascript技巧

本文实例讲述了JS实现新浪博客左侧的Blog管理菜单效果代码.分享给大家供大家参考,具体如下: 这里介绍新浪博客左侧的Blog管理菜单,我们变通一下,如果你在设计程序,那么本款菜单用到后台管理中想必应该很合适吧,图片是调用新浪的,用了比较多的图片,你用的时候最好是下载到本地,以免新浪哪天改版了,你就傻了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-sina-blog-left-menu-style-codes/ 具体代码如下: <ht

帝国cms通过自定义函数获取新闻文章数的实现代码

这篇文章主要为大家介绍了帝国cms系统中通过用户自定义函数获取用户发表新闻数量的方法,主要是分享下帝国cms自定义函数功能示例,有需要的朋友参考下在帝国cms中实现获取用户发表的新闻数量,没有现成的方法,不过可以用自定义函数来实现,一起来看看. 帝国cms中添加用户自定义函数. 就是在e/class/userfun.php文件中加下如下函数即可: 1,核心函数内容: 复制代码代码如下: <?php function get_newstotal($userid){ global $empire,$

前端-急问:如何使用ajax动态获取后台数据后将数据利用chart.js画图工具显示曲线?

问题描述 急问:如何使用ajax动态获取后台数据后将数据利用chart.js画图工具显示曲线? 20C 刚刚学习ajax,不是很了解.假如后台数据已经以json类型存在,在前端如何使用ajax获取后台的json数据?求给出具体些的完整代码供参考...还有请问如果数据是一系列二位数组(如[a1b1][a2b2]......)那么如何使用chart.js 将其显示出来?还请各位大神指教! 解决方案 ThinkPHP定时ajax获取后台数据,使用javascript动态修改前端页面的表格来显示数据 解

图片-extjs4获取后台数据,打开之后什么都没有,

问题描述 extjs4获取后台数据,打开之后什么都没有, 如图! 我写的代码并没有错,但是前台却获取不到,然后我猜想要么是我的路劲打开错了,要么就是其他我不知道的问题.这里我首先写了获取的代码之后,再接着我打开的是extjs的静态html页面,(我不知道这是不是错的!感觉应该是错的,因为我要获取的是动态的数据.但是,如果我是错的,那我应该怎么样去访问呢?求大神告知,因为百度搜不到访问的问题,只能在这里问了!) 解决方案 http://blog.sina.com.cn/s/blog_737a9d9

我用这种方式获取后台的list集合,但是怎么获取当前点击的对象的id

问题描述 我用这种方式获取后台的list集合,但是怎么获取当前点击的对象的id function gotos(){ <c:forEach items=""${daodulist}"" var=""v"" varStatus=""status""> var id = ""${v.id}""; </c:forEach> }; 解