【问题标题】:Apache - Uploading a file freezes my websiteApache - 上传文件会冻结我的网站
【发布时间】:2011-04-18 15:27:24
【问题描述】:

我有一个运行 PHP 网站的 Apache 服务器。

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

我的 Apache 似乎只有 1 个线程,并且在我的下载未完成时无法提供任何其他查询。

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

问题

如何解决此问题,以便在 Apache 将文件上传或下载到另一个客户端时提供查询?

【问题讨论】:

  • 您一定在做一些奇怪的事情,您的网站是否冻结?或者您的浏览器冻结?运行此测试:打开 Firefox > 开始下载/上传,同时打开 Chrome/IE 访问您的网站。如果打开,很有可能不是 APACHE
  • 网站没有响应。浏览器没问题。 Apache 是个问题。

标签: php multithreading apache debian


【解决方案1】:

您是否尝试过直接访问服务器上的图像或某些非 PHP 资源?我怀疑 Apache 会因文件上传而冻结,但 PHP 脚本可能会。

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

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

【讨论】:

  • 我想你明白了。事实上,只有基于 PHP 的上传会冻结我的会话。然后所有使用 session_start() 的 PHP 脚本都没有响应。我可以做些什么来防止这个问题?
  • 禁用上传脚本的自动启动会话。您应该可以通过 <Files upload.php> php_value session.auto_start = 0</Files> 或 Apache 中的任何内容来做到这一点。 PHP 中任何其他长时间运行的内容,请在长时间运行部分之前添加session_write_close()。您仍然可以访问会话数据,但不会写出任何更改。如果需要,您可以随时再次执行 session_start()。
  • 非常感谢 Marc,你拯救了我的一天。
  • @MarcB - 谢谢 - 这正是我正在寻找的解决方案 :)
【解决方案2】:

我建议阅读此http://httpd.apache.org/docs/current/mod/core.html#keepalive 并为您的 apache 服务器提供正确的设置...

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多