我有几个执行时间很长的脚本,我的 max_execution_time 是 5
然而,当我从 plus.google.com 获取一些信息时,它花了大约五分钟。一切都运行良好,但这只是耗时的过程,五分钟后,它因 max_execution_time 限制而死机。
我的问题是 -> 这怎么可能?max_execution_time 是否仅在没有发生任何事情时才计算(或者例如很多事情发生很多次(无限循环))?
答案1
当您开始执行时它就开始计数;脚本直到对 google 的调用返回后才终止的原因是,在系统调用进行时不会检查计时器,但是当系统调用返回时,PHP 会查看计时器并显示“哦,您已经没时间了”并终止脚本。
答案2
仅当执行线程在 PHP 中时才会检查计数器 - 当进程处于休眠状态(等待阻塞 I/O)时,它无法检查时钟。如果执行线程进入扩展并在那里停留一段时间,也会发生这种情况。