仓酷云

标题: PHP教程之php获得后台Job办理的完成代码 [打印本页]

作者: 兰色精灵    时间: 2015-2-3 23:36
标题: PHP教程之php获得后台Job办理的完成代码
学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...   复制代码 代码以下:
<?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脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。
作者: 精灵巫婆    时间: 2015-2-4 03:46
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 蒙在股里    时间: 2015-2-5 12:45
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 柔情似水    时间: 2015-2-27 05:39
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 活着的死人    时间: 2015-3-16 15:20
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 乐观    时间: 2015-3-17 00:10
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 只想知道    时间: 2015-3-17 06:40
实践是检验自己会不会的真理。
作者: 不帅    时间: 2015-3-24 00:08
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 简单生活    时间: 2015-4-9 09:06
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 若相依    时间: 2015-4-13 03:57
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
作者: 海妖    时间: 2015-4-16 14:19
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 爱飞    时间: 2015-5-1 22:12
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 灵魂腐蚀    时间: 2015-5-4 13:46
爱上php,他也会爱上你。
作者: 透明    时间: 2015-5-8 10:52
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 再见西城    时间: 2015-6-8 01:54
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 仓酷云    时间: 2015-6-8 19:57
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 飘飘悠悠    时间: 2015-6-13 07:40
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 金色的骷髅    时间: 2015-6-29 22:13
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 山那边是海    时间: 2015-6-30 16:06
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2