在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
考核部分的数据计算需要大量的时间来保证,如果串行执行,等所有的计算结束再反馈结果,用户体验会非常不好,测试人员甚至和我说他以为这是一个bug,没想到会要等这么久才出来结果。 所以作为开发就要开启多进程,一边让后台计算结果,一边反馈实时状态。 这里就用到了: system("nohup php *.php > /dev/null &");
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,正在处理,无法查看。 |
2022-08-17
2022-11-06
2022-07-29
2022-08-18
2022-08-13
请发表评论