使用PHP怎么控制循环操作的时间

  介绍

这期内容当中小编将会给大家带来有关使用PHP怎么控制循环操作的时间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

循环执行某个程序,但循环执行过程中,可能会超时导致程序死掉,因此需要限制每个循环操作的最长时间。如果超时,则直接断开改进程,并继续下一层循环操作。携程,多线程都可以完成该操作,但在没有了解这些高深技术的时候,可以用这个简便的方法替代。

TaskAsync。php

 namespace  TaskAsync;
  use  Workerman \ MySQL \连接;
  class  TaskAsync  {
  ,,,/* *
  ,,,,*,异步任务
  ,,,,*,@params  func 美元;要异步执行的主要函数
  ,,,,*,@params  func 美元;要异步执行超时后的函数
  ,,,,*,@params  maxTime 美元;异步执行超时的时间,单位:秒,s
  ,,,,*,@params  params 美元;要传递给美元func的参数
  ,,,*/,,,public  static  function  asyncTask (callable  func美元,美元params =,数组(),,maxTime 美元;=,0,,callable  func2 美元;=,null,, params2 美元;=,数组()){
  ,,,,,,,pcntl_signal (SIGCHLD, SIG_IGN);,//安装监听信号
  ,,,,,,,pid 美元;=,pcntl_fork();,//生成一个线程
  ,,,,,,,if  (pid 美元;==,1),{
  ,,,,,,,,,,,退出();//创建子进程失败
  ,,,,,,,},else  if  (pid 美元;==,0),{
  ,,,,,,,,,,,//逻辑
  ,,,,,,,,,,,try  {
  ,,,,,,,,,,,,,,,//执行用户函数
  ,,,,,,,,,,,,,,,中的call_user_func_array (func美元,,params);
  ,,,,,,,,,,,},{finally 
  ,,,,,,,,,,,,,,,//执行完后杀死进程
  ,,,,,,,,,,,,,,,posix_kill (posix_getpid (),, SIGKILL);
  ,,,,,,,,,,,,,,,退出(0);//结束子进程的操作
  ,,,,,,,,,,,}
  ,,,,,,,},else  if  (pid 美元;祝辞,0),{
  ,,,,,,,,,,,t 美元;=,();
  ,,,,,,,,,,,while (真实),{
  ,,,,,,,,,,,,,,,$ nPid=, pcntl_wait(年代,美元,WNOHANG);
  ,,,,,,,,,,,,,,,if  (nPid 美元;祝辞,0),{
  ,,,,,,,,,,,,,,,,,,,休息;
  ,,,,,,,,,,,,,,,},else  if  (nPid 美元;& lt;, 0), {
  ,,,,,,,,,,,,,,,,,,,休息;
  ,,,,,,,,,,,,,,,},else  if  (maxTime 美元;,,,时间(),安康;t 美元;祝辞,maxTime美元),{
  ,,,,,,,,,,,,,,,,,,,//默认超时时间为0,,即,不限制超时时间,
  ,,,,,,,,,,,,,,,,,,,posix_kill ($ pid, SIGKILL);
  ,,,,,,,,,,,,,,,,,,,if (!空(func2美元)),{
  ,,,,,,,,,,,,,,,,,,,,,,,中的call_user_func_array (func2美元,,params2美元);
  ,,,,,,,,,,,,,,,,,,,}
  ,,,,,,,,,,,,,,,,,,,休息;
  ,,,,,,,,,,,,,,,},{else 
  ,,,,,,,,,,,,,,,,,,,睡眠(1);//每秒轮询检查
  ,,,,,,,,,,,,,,,}
  ,,,,,,,,,,,}
  ,,,,,,,}
  ,,,}
  
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

使用PHP怎么控制循环操作的时间