首页 / PHP / 用nohup命令实现PHP的多进程
用nohup命令实现PHP的多进程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用nohup命令实现PHP的多进程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1844字,纯文字阅读大概需要3分钟。
内容图文
![用nohup命令实现PHP的多进程](/upload/InfoBanner/zyjiaocheng/974/58f4ea4bfd724843b37e5689b7183162.jpg)
考核部分的数据计算需要大量的时间来保证,如果串行执行,等所有的计算结束再反馈结果,用户体验会非常不好,测试人员甚至和我说他以为这是一个bug,没想到会要等这么久才出来结果。
所以作为开发就要开启多进程,一边让后台计算结果,一边反馈实时状态。
这里就用到了:
system("nohup php *.php > /dev/null &");
nohup命令会开启一个新的进程执行后面的PHP任务,*.php是要在后台执行的脚本文件。
这里有要一个要注意的地方,这一段 > /dev/null & 是不可缺少的, > /dev/null 表示立即将php的执行结果返回为空,如果不加,调用此命令的PHP会等待system调用的php页面结果,达不到多进程的效果,&是nohup命令的结束的标示。
1 $rs = Exam_general::add($name, $starttime, $endtime, $idstr, $operator); 2 echo $rs; 3 system("nohup php {$FILE_PATH}commands/statistic_exam_general_check.php >/dev/null &");
第一句是将一条记录插入数据库,表示我要新建这样的一个考核,此时的状态设为2,也就是“等待创建的过程”。这样一条记录的插入当然费不了多少时间,$rs是返回的json语句,将其打印出来,通过ajax进行反馈。在此同时,我们也要调用系统进程,开始我们的大数据计算,在后台运行statistic_exam_general_check.php 脚本文件。
$updateSql = "update rongcheng110_exam_general set exam_general_status=3 where exam_general_id={$examId}";
在脚本文件的最后,执行这样一条sql语句,可以将之前设为2的状态更新成3,表示计算完成。
在view层,我们可以这样表示:
1 if($row["status"]==Exam_general::SOLVED){ 2 echo '<a href="examdep_general_data.php?exam='.$row["id"].'">查看详情</a>'; 3 } 4 else{ 5 echo $row["status"]==Exam_general::WAIT_SOLVE?"等待处理":"<font color='red'>正在处理</font>"; 6 }
Exam_general::SOLVED 表示数据库字段3,更新完成,可以查看了。
Exam_general::WAIT_SOLVE 表示数据库字段2,正在处理,无法查看。
这样,就会有比较好的用户体验效果啦!
但是这里有一个问题,就是我在执行system() 函数时,想在执行文件后面加上 ?idstr = idstr 方便传参,但是执行脚本却get不到该变量,我也不知道这是怎么回事,希望有大神可以留言指点一二!感激不尽!
内容总结
以上是互联网集市为您收集整理的用nohup命令实现PHP的多进程全部内容,希望文章能够帮你解决用nohup命令实现PHP的多进程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。