zoukankan      html  css  js  c++  java
  • 限定页面执行时间,请求超时抛出异常或提示

    方案一:

      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 appindexehavior;
    
    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'      => [],
    ];
  • 相关阅读:
    python中scipy学习——随机稀疏矩阵及操作
    ptyhon中文本挖掘精简版
    ptyhon中文本挖掘精简版
    [python] 使用scikit-learn工具计算文本TF-IDF值
    [python] 使用scikit-learn工具计算文本TF-IDF值
    python高手的自修课
    python高手的自修课
    C/C++ scanf 函数中%s 和%c 的简单差别
    Ctags基本配置
    搭建gitserver
  • 原文地址:https://www.cnblogs.com/clubs/p/9060478.html
Copyright © 2011-2022 走看看