码迷,mamicode.com
首页 > 其他好文 > 详细

限定页面执行时间,请求超时抛出异常或提示

时间:2018-05-19 17:09:05      阅读:1528      评论:0      收藏:0      [点我收藏+]

标签:返回值   app   注意   日志   function   位置   视图   bsp   请求超时   

方案一:

  1.修改php.ini配置文件 max_execution_time = 30 ,限定页面请求时间,默认30秒;

方案二:

  1.set_time_limit设置脚本最大执行时间,函数没有返回值

  设置允许脚本运行的时间,单位为秒。如果超过了此设置,脚本返回一个致命的错误。默认值为30秒,或者是在php.inimax_execution_time被定义的值,如果此值存在。

  当此函数被调用时,set_time_limit()会从零开始重新启动超时计数器。换句话说,如果超时默认是30秒,在脚本运行了了25秒时调用set_time_limit(20),那么,脚本在超时之前可运行总时间为45秒。

 

  当你的页面有大量数据时,建议使用set_time_limit()来控制运行时间,配置该页最久执行时间。

  设定一个程式所允许执行的秒数,如果到达限制的时间,程式将会传回错误,时间是秒单位。

  php.ini:它预设的限制时间是30秒,max_execution_time的值定义在结构档案中,如果将秒数设为0,表示无时间上的限制,修改后重新启动apache/nginx服务器

  eg: php代码:set_time_limit(800);

  这个函数指定了当前所在php脚本的最大执行时间为800秒,实际上最大执行时间=php.ini里的max_execution_time数值 - 当前脚本已经执行的时间 + 设定值

  假如php.ini里的max_execution_time=30,当前脚本已经执行5秒,则:

  最大执行时间=30-5+800=825秒

  注意:当php运行于安全模式时,此功能不能生效。除了关闭安全模式或改变php.ini中的时间限制,没有别的办法,当运行超过设定时间会返回一个致命错误

  技术分享图片

方案三:TP5框架配合set_time_limit()函数方案

  使用tp框架行为扩展配合set_time_limit()函数实现,该方法是在每个接口请求时,都先执行set_time_limit(),目前这种方法超时程序不会停止执行(windows下),但会返回一致命错误。

  1.行为定义,定义一个行为类命名为Be.php,注意命名空间,类文件路径要放对

<?php
namespace app\index\behavior;

class Be
{
    public function actionBegin(&$params)
    {
        $bool = set_time_limit(5);
        //$bool = ini_set ( ‘set_time_limit‘ , 5 );
    }

    public function appEnd(&$params)
    {

    }
}

 

  2.行为定义完成后,就需要绑定到某个标签位置才能生效,否则是不会执行的。可以在APP_PATH目录下面或者模块的目录下面定义tags.php文件来统一定义行为,定义如下:

<?php

// 应用行为扩展定义文件
return [
    // 应用初始化
    ‘app_init‘     => [],
    // 应用开始
    ‘app_begin‘    => [],
    // 模块初始化
    ‘module_init‘  => [],
    // 操作开始执行
    ‘action_begin‘ => [
        ‘app\\index\\behavior\\Be‘,
    ],
    // 视图内容过滤
    ‘view_filter‘  => [],
    // 日志写入
    ‘log_write‘    => [],
    // 应用结束
    ‘app_end‘      => [],
];

 

限定页面执行时间,请求超时抛出异常或提示

标签:返回值   app   注意   日志   function   位置   视图   bsp   请求超时   

原文地址:https://www.cnblogs.com/clubs/p/9060478.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!