我有一个路由器/调制解调器/ISP超时的问题,我的页面将被给予超时警告的空白页。这似乎不是一个问题在服务器端,因为页面将加载最终有足够的时间给不同的路由器/调制解调器/ISP。
让我们假设我没有其他方法来优化运行时间,并且页面需要运行尽可能长的时间。是否有办法100%防止客户端浏览器超时?
如果您正在运行资源丰富的脚本,请考虑使用set_time_limit()函数增加超时限制。
set_time_limit(60); // 60 seconds
如果你讨厌你的服务器,你甚至可以无限制地使用0
:
set_time_limit(0); // to stop this, you would need to restart your web server
如果你想让你的脚本继续工作甚至,如果请求被终止,比如当web浏览器被用户关闭时,你可能有兴趣使用ignore_user_abort()。
<?php
set_time_limit(60);
ignore_user_abort(true);
echo 'Hello world! Wait for it...';
sleep(30);
file_put_contents('testing.txt','Even if you closed your browser, this file will be created.');
echo 'Thanks for waiting!';
?>
使用这些函数可能NOT是一个好的做法。考虑修改你的剧本。如果这是一个将由多个用户访问的脚本,这可能会使您的服务器崩溃。