2011-10-03 123 views
1

我目前正在研究一个上传脚本,支持较大的上传(〜50 Mb),我很快就遇到了问题!我使用传统的POST请求,将表单上传到临时位置,稍后使用PHP进行移动。当然,我已经更新了我的php.ini文件,以支持稍大于默认文件和大约15 Mb的文件上传真的很好!PHP POST请求超时

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

无法启动服务器上的超时(激烈辩论后)我在考虑选项。有没有办法凹凸的请求或以某种方式刷新它来通知服务器并重置计时?或者有没有其他的上传方法不超时?

+0

我不知道,POST提交是定时和脚本timout的一部分,我从来没有遇到过这个问题,并已上传超过300MB(私人应用程序)。 – Jakub

+0

使用PHP,任何上传相关的设置必须(在httpd.conf /或的.htaccess覆盖)通过php.ini文件级别的设置来完成。他们不能通过的ini_set改变,因为上载有完成之前,PHP将开始执行你的代码,以达到这些设置。使用客户端的基于Flash/Java的上传器分块上传时,没有任何事情可做。 –

回答

0

非常困难。到目前为止,您最简单的选择是倾倒硬头的主持人,选择一个能够提高生产力的主持人。我个人使用TSOHost - 与他们在一起已经一年半了,迄今为止绝对没有理由抱怨(甚至没有轻微的烦恼)。

0

有几件事情你可以考虑。每个人都有成本,你需要确定哪一个成本最低。

  1. 获取一个新的托管公司。这可能是你最好的解决方案。

  2. 设计相当复杂的客户端系统,打破了上传到多个块,并通过AJAX提交他们。这很丑陋,特别是因为它只能用于绕过主机规则。

我真的会研究#1。

+0

我想这就是你得到的选择一个便宜的托管解决方案:P感谢您的超快速回信:) –

+0

我们很多人有T恤。活到老,学到老。 –

0

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

  • 由于在php服务器php.ini文件中设置了配置限制,transferrt失败。你需要在你的脚本来改变它或将其设置为本地设置

    #发现它在你的配置中使用的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');