2011-04-18 43 views
2

我有一台运行PHP网站的Apache服务器。Apache - 上传文件冻结了我的网站

当我通过网站上传文件或从我的服务器下载文件时,整个网站无法在下载完成时回应任何其他查询。

它看起来像我的Apache只有1个线程,并且我的下载没有完成时不能提供任何其他查询。

我的服务器有Debian,在带1Go RAM的Pentium4 3Ghz CPU上。

问题

我怎样才能解决这个问题,所以我可以同时提供查询服务的Apache上载或下载文件到另一个客户端?

+1

有没有问题...... – Mischa 2011-04-18 15:31:21

+1

你一定在做一些奇怪的事情,你的网站是否冻结?或者你的浏览器冻结?运行此测试:打开Firefox>开始下载/上传,当发生这种情况时,请打开Chrome/IE访问您的网站。如果它打开,有一个很好的可能性,它不是APACHE – Stewie 2011-04-18 15:33:59

+0

该网站没有回应。浏览器是好的。 Apache是​​问题。 – 2011-04-18 15:34:39

回答

1

你有没有尝试直接访问一个图像或服务器上的一些非PHP资源?我怀疑Apache会冻结文件上传,但PHP脚本可能会冻结。

如果您已将PHP配置为自动启动会话,那么默认的基于文件的会话处理程序会在会话文件的整个生命周期内锁定会话文件,这意味着您的上载将锁定所有其他PHP脚本上传。

因此,请尝试直接点击图像或某些文本等...不是PHP的东西,看看服务器是否响应。如果是这样,那么这是你的PHP配置,会话处理程序是最有可能的罪魁祸首。

+0

我想你明白了。事实上,只有基于PHP的上传才会冻结我的会话。然后,所有使用session_start()的PHP脚本都不响应。我能做些什么来防止这个问题? – 2011-04-18 16:00:03

+3

禁用上传脚本的自动启动会话。您应该可以通过' php_value session.auto_start = 0'或Apache中的任何内容来完成。在长时间运行的PHP中,在长时间运行的部分之前放置一个'session_write_close()'。您仍然可以访问会话数据,但不会写出任何更改。如果需要,可以随后再次执行session_start()。 – 2011-04-18 16:06:12

+0

非常感谢Marc,你救了我的一天。 – 2011-04-18 16:08:47