【问题标题】:How to Code to Avoid Timeout in PHP如何在 PHP 中编写代码以避免超时
【发布时间】:2016-10-28 06:29:53
【问题描述】:

我遇到了路由器/调制解调器/ISP 超时问题,我的页面将出现带有超时警告的空白页面。这似乎不是服务器端的问题,因为页面最终会在不同的路由器/调制解调器/ISP 上加载足够的时间。

让我们假设我没有其他方法来优化运行时间,并且页面将需要运行,只要它运行。有什么方法可以 100% 防止客户端浏览器超时?我用 PHP 编码。

【问题讨论】:

  • 您使用烤面包机作为路由器还是在此页面上有 23423GB 的数据? ô.o 它的 2016 年......几乎没有网站没有加载超时的原因......至少没有正确的设备......
  • 如果您的脚本超时,您在后台执行的操作听起来有些问题。您应该考虑将架构更改为异步方法,这将节省很多麻烦。但是,如果您真的在寻找一个快速而肮脏的解决方案,那么请提高您的 php.ini 文件中的设置,以限制执行脚本的可用时间。默认值为 30 秒。您也可以尝试使用set_ini() 函数以动态方式执行此操作。查看它的文档:php.net/manual/en/function.ini-set.php
  • 你也可以使用 set_time_limit(int $seconds)。请参阅文档:php.net/manual/en/function.set-time-limit.php
  • Let us assume that I have no other way to optimize the running time 假设这是无知的,总有更好的方法。
  • @Twinfriends:我希望事情是这样的。就像我说的,接收端是罪魁祸首,我无法控制接收端,不是吗?它在其他设备上完美加载。但在某些 ISP/路由器上,它会超时。

标签: php timeout


【解决方案1】:

如果您正在运行资源丰富的脚本,请考虑使用 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

如果您希望脚本继续工作即使如果请求被中止,例如当用户关闭网络浏览器时,您可能有兴趣使用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!';
?>

提醒

使用这些功能可能不是是一种好的做法。考虑修改你的脚本。如果这是一个将被多个用户访问的脚本,这可能会使您的服务器崩溃。

【讨论】:

    猜你喜欢
    • 2011-03-22
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2018-09-03
    • 2011-05-31
    • 2019-02-19
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多