PHP 的脚本执行时间无效了是什么原因? php5.6

2017-07-13 11:17:07 +08:00
 raysonlu
php 脚本执行没有了时间限制

php.ini 里面已设置了 max_execution_time,也尝试过在 ini_set 或使用 set_limit_time,但就是无效,一直不停地执行( apache+php,用浏览器访问,脚本用死循环不报错,循环 echo 时间多少秒都 echo,没有用 sleep )

网上搜到的都说是因为开启了安全模式,但我用 php5.6,应该是没有了安全模式了吧?

究竟是什么原因?很疑惑,求指点!谢谢!
5190 次点击
所在节点    PHP
28 条回复
studentht
2017-07-14 14:52:26 +08:00
Apache 使用 event MPM 模式的话,那么 PHP 这边是使用的 FPM 吧, 在 php-fpm 配置里设置 request_terminate_timeout 看看
raysonlu
2017-07-14 17:30:16 +08:00
@studentht 没有使用 fastcgi 啊,跟 FPM 啥关系?而且服务器应该没有配置 php-fpm
ihaveobj
2017-07-14 21:49:38 +08:00
手机上回复,没有经过测试。
你把 while 里的 echo 全注释,在循环结束输出下试试。

印象中 max_execution_time 是控制脚本的响应,你循环中输出的字符可能已经被刷出缓冲区了。
studentht
2017-07-18 15:18:51 +08:00
@raysonlu 那你是怎么加载 PHP 模块 /启动 PHP 进程
raysonlu
2017-07-18 15:24:05 +08:00
@studentht
LoadModule php5_module modules/libphp5.so
raysonlu
2017-07-18 15:25:49 +08:00
@ihaveobj
试了你说的,一样,不关输出缓冲吧,因为我测试代码中循环后面至少还有一个 echo "success"要执行
awanganddong
2022-04-28 14:36:38 +08:00
遇到相同的问题,标记下
awanganddong
2022-04-28 14:54:56 +08:00
配置指令 max_execution_time 只影响脚本本身执行的时间。任何发生在诸如使用 system()的系统调用,流操作,数据库操作等的脚本执行的最大时间不包括其中,当该脚本已运行。
```
我在使用如下操作的时候,是可以报系统异常的。如果把循环内替换为 var_dump(),则一直死循环。在循环内添加 var_dump(),也是死循环。推测是如果牵扯到系统调用等操作,会把系统默认参数初始化。
$dummy = 2;
for ($i = 0; $i < 10000000000; $i++) {
$dummy *= 2;
}

```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375001

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX