【问题标题】:PHP POST requests timeoutPHP POST 请求超时
【发布时间】:2011-11-30 02:57:39
【问题描述】:

我目前正在开发一个支持更大 上传(~50 Mb)的上传脚本,但我很快就遇到了问题!我正在使用带有表单的传统 POST 请求将文件上传到临时位置,然后使用 PHP 移动它。当然,我已经更新了我的 php.ini 文件,以支持比默认文件稍大的文件和 15 Mb 左右的文件上传非常好!

主要问题是由于我的托管公司。他们让脚本在 60 秒后超时,这意味着需要超过 60 秒才能完成的 POST 请求将在临时文件到达 PHP 脚本之前终止,这自然会产生内部服务器错误。

无法在服务器上设置超时(经过激烈的辩论)我正在考虑这些选项。有没有办法bump 请求或以某种方式刷新它以通知服务器并重置时间?或者是否有其他不超时的上传方法?

【问题讨论】:

  • 我不知道 POST 提交是定时的并且是脚本超时的一部分,我从来没有遇到过这个问题,并且上传的文件超过了 300mb(私人应用程序)。
  • 使用 PHP,任何与上传相关的设置都必须通过 php.ini 级别的设置(或在 httpd.conf/.htaccess 中覆盖)来完成。它们不能通过 ini_set 更改,因为上传必须在 PHP 开始执行您的代码以达到这些设置之前完成。没有使用基于 Flash/java 的客户端上传器对上传进行分块,您无需执行任何操作。

标签: php file-upload timeout http-post request-timed-out


【解决方案1】:

您可以考虑一些事情。每个都有成本,您需要确定哪个成本最低。

  1. 获取新的托管公司。这可能是您的最佳解决方案。

  2. 设计一个相当复杂的客户端系统,将上传分成多个块并通过 AJAX 提交。这很难看,尤其是因为它仅在绕过主机规则时才有用。

我真的会研究 #1。

【讨论】:

  • 我想这就是您选择便宜的托管解决方案所得到的:P 感谢您的超快速回复 :)
【解决方案2】:

困难重重。到目前为止,您最简单的选择是抛弃头脑冷静的主机并选择一个真正让您高效的主机。我个人使用TSOHost - 和他们在一起一年半多了,到目前为止完全没有理由抱怨(甚至没有一点烦恼)。

【讨论】:

    【解决方案3】:

    您确定这是超时问题吗?我的第一个想法...

    • 由于 Web 服务器 php.ini 文件中设置的配置限制,传输失败。您需要更改它或将其设置为脚本中的本地设置

      # 在你的配置使用的 php.ini 中找到它 memory_limit = 96M post_max_size = 64M upload_max_filesize = 64M

    或者直接在你的脚本中

    ini_set('memory_limit', '96M'); 
    ini_set('post_max_size', '64M'); 
    ini_set('upload_max_filesize', '64M');
    

    【讨论】:

      猜你喜欢
      • 2016-11-02
      • 2017-04-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2021-03-11
      • 2021-12-19
      • 2023-03-30
      • 2011-02-26
      相关资源
      最近更新 更多