`

PHP 超时控制

 
阅读更多

1. PHP 的超时函数:set_time_limit ,但这个函数对 sleep, exec,数据库等操作,是不计算时间的,换句话说,这是不精确的超时控制,比如下面两个例子:

    a:

<?php
set_time_limit(5);
while (true) {
  //其他操作
}
echo "执行完毕";
?>

    b:

    

<?php
set_time_limit(5);
$db   = mysqli_connect('localhost','root','root','table');
$sql = "SELECT SLEEP(10) FROM table;";
$db->query($sql);
echo "执行完毕";
?>

 

2. 要精确控制的话,如果在CLI下执行,可以这样:

   

<?php
$real_execution_time_limit = 60; //时间限制

if (pcntl_fork())
{
    // some long time code which should be
    // terminated after $real_execution_time_limit seconds passed if it's not
    // finished by that time
}
else
{
    sleep($real_execution_time_limit);
    posix_kill(posix_getppid(), SIGKILL); 
}

 

如果是web中,以fpm 方式执行,那么可以修改:/etc/php5/fpm/pool.d/www.conf 中的 request_terminate_timeout。 如果想看哪些脚本超时了,可以配置:request_slowlog_timeout 和 slowlog

另外需要配置apache 的站点中配置 FastCgiExternalServer -idle-timeout 300

分享到:
评论

相关推荐

    PHP函数执行超时控制扩展ForPHP7控制PHP函数的执行时间

    为了解决这个问题,我们可以使用特定的扩展来控制函数的执行时间,比如"PHP函数执行超时控制扩展 (For PHP7)"。这个扩展允许我们在毫秒级别上设置超时控制,以确保单个函数不会无限制地运行,从而避免阻塞其他任务。...

    thinkphp5.0-php登录超时检测功能的类

    虽然PHP的Session管理可以在服务器端控制登录状态,但为了提供更好的用户体验,可以在客户端也进行超时检测。例如,我们可以在每个页面加载时发送一个定时的Ajax请求,如果在设定的时间间隔内没有收到新的请求,前端...

    php登录超时检测功能的类

    以下将详细介绍基于ThinkPHP5.0框架实现登录超时检测功能的类,以及如何将这种思路应用到原生PHP或其他框架中。 首先,ThinkPHP5.0是一个轻量级、快速且灵活的PHP开发框架,其内置的Session管理机制为我们提供了...

    php中精确控制session超时时间

    在PHP编程中,控制session的超时时间是一个重要的议题,特别是在需要精确管理用户登录状态的场景下。PHP的默认session超时时间为1440秒(即24分钟),但有时候开发者可能需要自定义更短或更长的超时时间以满足特定...

    PHP超时处理全面总结.docx

    【PHP超时处理全面总结】 在PHP开发中,超时处理是一个至关重要的议题,它涉及到系统性能、稳定性以及用户体验。本文将对PHP中常见的超时处理进行详细阐述,包括其在不同场景下的应用和配置方法。 一、超时场景与...

    php页面函数设置超时限制的方法

    可以使用pcntl扩展实现精准的函数级超时控制,也可以通过修改php.ini配置文件或在程序中调用set_time_limit()函数来设置整个脚本的执行时间限制。这样,既能保证脚本有足够时间完成任务,又能避免因执行时间过长而...

    php登录超时检测功能实例详解

    在php代码中,首先创建了一个登录版块的控制器,用于处理登录逻辑和检测登录状态超时的逻辑。以下为ThinkPHP框架中控制器的代码示例: ```php &lt;?php namespace app\manage\control; use \think\Controller; class ...

    php下载文件超时时间的设置方法

    然而,需要注意的是,`set_time_limit()`函数并不适用于控制文件下载的超时,因为它只影响脚本本身的执行时间,而不是像cURL这样的系统调用。因此,即使设置了`set_time_limit()`,对于大文件下载来说,仍然可能会...

    基于 swoole 的多进程队列系统,低延时(最低毫秒级)、低资源占用, 支持一键化协程、超时控制、失败重试。

    总结来说,这是一个基于Swoole的PHP多进程队列系统,它利用了Swoole的协程和进程管理能力,实现了毫秒级延迟、低资源占用、超时控制和失败重试功能,适用于高并发场景下的任务处理,同时也适合作为学习PHP并发编程和...

    php之curl设置超时实例

    使用cURL处理HTTP请求时,超时控制是至关重要的,因为它可以帮助你避免因为网络延迟或其他问题导致的长时间等待。通过正确配置超时设置,你可以确保程序在预期时间内完成任务,从而提高整体的响应速度和用户体验。 ...

    PHP中Socket连接及读写数据超时问题分析

    需要注意的是,`stream_set_timeout()`的设置只对当前的读写操作有效,因此每次读写前都需要重新设置超时时间,以确保每次操作都有正确的超时控制。 以下是一个完整的示例,展示了如何处理连接和读写的超时情况: ...

    PHP http请求超时问题解决方案

    【PHP HTTP请求超时问题详解及解决方案】 在PHP开发中,遇到HTTP请求超时的问题时,这通常是由于网络延迟、服务器响应慢或者请求处理时间过长导致的。超时问题通常分为两类:连接超时和数据传输超时。理解这两类...

    PHP实现的带超时功能get_headers函数_.docx

    总之,当遇到`get_headers()`函数在网络环境不稳定时导致脚本执行时间过长的问题时,可以通过自定义函数并利用cURL来实现超时控制。这个方法提供了更灵活的控制,但也可能带来额外的性能开销。在实际应用中,应根据...

    php脚本运行时的超时机制详解

    本文将深入探讨这一机制,包括超时配置的设置和在处理请求时如何控制超时。 PHP的超时机制主要包括两个关键配置:`max_input_time` 和 `max_execution_time`。`max_input_time` 用于限制处理用户输入数据所花费的...

    php设置页面超时时间解决方法

    在PHP编程中,有时我们可能会遇到页面加载时间过长或者因为服务器响应问题导致页面无响应的情况。...理解这些方法并灵活运用,可以帮助你在开发过程中更好地控制PHP页面的执行时间,提升系统性能和用户体验。

    一个严格的PHP Session会话超时时间设置方法

    配置文件中,有专门用于控制会话超时的参数:session.gc_maxlifetime和session.cookie_lifetime。 - session.gc_maxlifetime是指垃圾回收机制认为会话可以存在的时间上限,单位是秒。默认值为1440秒,即24分钟。这...

Global site tag (gtag.js) - Google Analytics