你好经验丰富的人,我在一台服务器上写的一个PHP脚本遇到了一个非常奇怪的问题,在本地工作站里,一切都像魅力一样。
基本上我写了这个脚本用于报废,我有N页要废弃,但在示例中我只是以20为例,我也正在删除报废过程(这工作正常,问题在于下面的代码),在每次迭代之后我们需要M毫秒的延迟*强制性(这是为了避免禁止的可能性,服务器禁止来自同一IP的非常快的请求),在下面的代码中我把10000毫秒我正在使用那个睡着了。我知道我可以使用sleep函数,但客户端想以毫秒为单位输入。
报废很好,问题是当我执行下面的代码时,服务器永远不会成功完成,我从未看到“状态:脚本已完成”。消息,执行持续大约3分18秒,然后脚本突然停止,没有错误消息,没有错误日志,没有...我只收到“开始...”消息。这是代码:
<?php
error_reporting(E_ALL);
ini_set("display_errors", "On");
ini_set("display_startup_errors", "On");
function Start() {
$lim = 20;
for ($i = 0; $i < $lim; $i++) {
usleep(10000 * 1000); //usleep need microseconds, in other words the delay is 10 seconds
// scrapping process here
}
echo "Status: The script has finished.";
}
echo "starting... ";
Start();
当$ lim = 20时,执行持续3分18秒,然后脚本停止没有任何错误,这个延迟是错误的应该是200秒或3分20秒,在最后一次延迟中发生了什么。
使用$ lim = 7,执行持续64秒,之后脚本会再次停止而不会出现任何错误。正确的延迟应该是70秒。
很明显,上次延迟会发生一些事情,
我有这个配置的php.ini: 的max_execution_time = 0 另外,我使用了set_time_limit(0);在PHP脚本中。 即使我做了
echo ini_get("max_execution_time");
打印0 所以,我不是max_execution_time的问题,它应该是其他的。我错过了其他一些配置吗?
我在所有这些网络浏览器中测试过,firefox 21,chrome 27,safari 5,我只收到“开始”消息。在konqueror Web浏览器中,我收到此消息“连接到服务器意外关闭”。
如果您遇到类似的事情,请告诉我,您的支持对我非常有用。
问候。