0

0

PHP 的最大执行时间限制为何对 sleep() 无效?

聖光之護

聖光之護

发布时间:2026-01-21 22:54:45

|

639人浏览过

|

来源于php中文网

原创

PHP 的最大执行时间限制为何对 sleep() 无效?

php 的 `max_execution_time` 仅限制脚本实际 cpu 执行时间,不计算 `sleep()`、curl 等阻塞式 i/o 操作所耗费的挂起时间,因此 `sleep(45)` 不会触发超时终止。

在 PHP 中,max_execution_time(默认通常为 30 秒)是一个CPU 执行时间上限,而非“总耗时”或“墙钟时间(wall-clock time)”。这意味着:只有 PHP 解释器正在 actively 执行 PHP 字节码(如循环计算、函数调用、数组操作等)的时间才会计入该限制;而所有让出控制权、进入内核等待状态的操作——例如 sleep()、usleep()、file_get_contents()(含远程 HTTP)、curl_exec()、数据库查询(PDO/MySQLi)、fread() 阻塞读取、stream_socket_client() 连接等待等——均不消耗 max_execution_time

✅ 正确理解示例:

// ✅ 此代码将被终止(约 30 秒后抛出 Fatal Error)
$start = microtime(true);
while (microtime(true) - $start < 45) {
    // 空循环持续占用 CPU —— 计入 max_execution_time
}
echo "Done"; // 实际不会执行

❌ 错误测试方式(误导性):

// ❌ 此代码将完整执行 45 秒,不受 max_execution_time 限制
echo "Start: " . date('H:i:s') . "\n";
sleep(45); // 内核级休眠,PHP 不执行任何指令 → 时间不计费
echo "End: " . date('H:i:s') . "\n"; // 45 秒后才输出

⚠️ 注意事项:

拍拍客 免费易推广api系统
拍拍客 免费易推广api系统

这是一套由淘掌门(taozhangmen.net)衍生出来的一个拍拍客系统!这套程序也继承了淘掌门的特点:永久免费开源!无任何时间限制、功能限制、域名限制。 程序相对于淘掌门原型,已去除返利、会员系统、文章系统等。 如果需要文章,可单独下载其他的文章系统,做子目录,效果可能会更好。 程序安装过程与淘掌门相同: 下载上传到空间,执行 你的网址/install.php 安装完成后,登陆后台修改拍拍AP

下载

立即学习PHP免费学习笔记(深入)”;

  • set_time_limit(15) 或 ini_set('max_execution_time', 15) 同样只重置后续 CPU 执行时间限额,对已进入 I/O 等待的状态无影响;
  • CLI 模式下 max_execution_time 默认为 0(无限制),而 Web SAPI(如 Apache/FPM)才启用该限制;
  • 若需真正限制总耗时(含等待),应结合 pcntl_alarm()(CLI)、信号处理,或在应用层使用超时逻辑(如 cURL 的 CURLOPT_TIMEOUT_MS、PDO 的 PDO::ATTR_TIMEOUT),或借助 microtime() 手动校验累计耗时;
  • 对于长任务(如批量文件生成),推荐改用异步队列(如 Redis + Worker)或分片处理(yield/Generator + 分页),避免依赖 max_execution_time 做流程控制。

? 总结:max_execution_time 是一个CPU 时间熔断机制,不是“任务总时长看门狗”。调试时切勿用 sleep() 验证其有效性;真实业务中,应针对 I/O 操作单独设置超时,并用主动计时+中断逻辑保障整体响应性。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2744

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1675

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1533

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

995

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1464

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1235

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1549

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1307

2023.11.13

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

1

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.9万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 805人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号