这期内容当中小编将会给大家带来有关使用PHP怎么控制循环操作的时间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。循环执行某个程序,但循环执行过程中,可能会超时导致程序死掉,因此需要限制每个循环操作的最长时
这期内容当中小编将会给大家带来有关使用PHP怎么控制循环操作的时间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
循环执行某个程序,但循环执行过程中,可能会超时导致程序死掉,因此需要限制每个循环操作的最长时间。如果超时,则直接断开改进程,并继续下一层循环操作。携程,多线程都可以完成该操作,但在没有了解这些高深技术的时候,可以用这个简便的方法替代。
TaskAsync.php
namespace TaskAsync;use Workerman\MySQL\Connection;class TaskAsync { public static function asyncTask(callable $func, $params = array(), $maxTime = 0, callable $func2 = null, $params2 = array()){ pcntl_signal(SIGCHLD, SIG_IGN); //安装监听信号 $pid = pcntl_fork(); //生成一个线程 if ($pid == -1) { exit();//创建子进程失败 } else if ($pid == 0) { //逻辑 try { //执行用户函数 call_user_func_array($func, $params); } finally { //执行完后杀死进程 posix_kill(posix_getpid(), SIGKILL); exit(0);//结束子进程的操作 } } else if ($pid > 0) { $t = time(); while (true) { $nPid= pcntl_wait($s, WNOHANG); if ($nPid > 0) { break; } else if ($nPid < 0) { break; } else if ($maxTime && time() - $t > $maxTime) { //默认超时时间为0 ,即 不限制超时时间 posix_kill($pid, SIGKILL); if (!empty($func2)) { call_user_func_array($func2, $params2); } break; } else { sleep(1);//每秒轮询检查 } } } } public static function getMysqlConn() { $dbConfig = require(APP_PATH . '/database.php'); return new Connection($dbConfig['hostname'], $dbConfig['hostport'], $dbConfig['username'], $dbConfig['passWord'], $dbConfig['database']); }}
index.php
use TaskAsync\TaskAsync;//使用while(true) {$db = TaskAsync::getmysqlConn();//数据库操作$db->closeConnection();$data = [] ;//传入的数据TaskAsync::asyncTask(array(new Download(),'downLoadexcel'), array($data), 60 * 60 * 10 , function($data){ echo '执行超时' ; }, array($data) );}
php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、Phalcon,Phalcon是运行速度最快的一个PHP框架。3、Symfony,Symfony是一款为WEB项目准备的PHP框架。4、Yii,Yii是一款快速、安全和专业的PHP框架。5、CodeIgniter,CodeIgniter是一款非常敏捷的开源PHP框架。6、CakePHP,CakePHP是一款老牌的PHP框架。7.Kohana,Kohana是一款敏捷但是功能强大的PHP框架。
上述就是小编为大家分享的使用PHP怎么控制循环操作的时间了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网PHP编程频道。
--结束END--
本文标题: 使用PHP怎么控制循环操作的时间
本文链接: https://lsjlt.com/news/278035.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0