介绍
这期内容当中小编将会给大家带来有关使用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怎么控制循环操作的时间