【问题标题】:PHP script occasionally waits 20-30 minutes to startPHP 脚本偶尔会等待 20-30 分钟才能启动
【发布时间】:2011-12-03 01:30:04
【问题描述】:

我的服务器上有一个 PHP 脚本,主要是从上传文件中获取文件并将它们移动到适当的位置。它通常可以正常工作,但有时脚本会在 20-30 分钟内无法启动。在等待期间,整个上传的文件将位于 tmp 文件夹中,因此看起来数据传输已完成。这是 Apache 访问日志的摘录,指示脚本的 POST(来自 Android 应用程序).​​..

[29/Nov/2011:11:21:55 -0500] "POST /submit.php HTTP/1.1" ...

但是,此条目直到 11:43 左右才显示在访问日志中,周围是 11:43:42 和 12:00:02 的其他页面请求。这使我相信在脚本执行之前不会写入条目,但它是在提交时写入的。这是错误日志,我正在从脚本中编写事件...

[Tue Nov 29 11:43:19 2011] Script started: Nov 29, 2011 11:43:19
[Tue Nov 29 11:43:19 2011] Audio file provided
[Tue Nov 29 11:43:19 2011] Timestamp provided
[Tue Nov 29 11:43:19 2011] Defaults set
[Tue Nov 29 11:43:19 2011] Connected to database
[Tue Nov 29 11:43:19 2011] Database selected
[Tue Nov 29 11:43:19 2011] Query successful
[Tue Nov 29 11:43:19 2011] 551: ID set
[Tue Nov 29 11:43:19 2011] 551: Audio file moved
[Tue Nov 29 11:43:19 2011] 551: Algorithm succeeded
[Tue Nov 29 11:43:19 2011] 551: Algorithm query succeeded
[Tue Nov 29 11:43:19 2011] 551: Photo type identified
[Tue Nov 29 11:43:20 2011] 551: Photo and thumbnail saved
[Tue Nov 29 11:43:20 2011] 551: Cache cleared
[Tue Nov 29 11:43:20 2011] Script finished: Nov 29, 2011 11:43:20

知道什么会导致 PHP 脚本无法执行这么长时间,或者我应该放置什么样的日志来找出答案?服务器正在运行Ubuntu 10.04Apache 2.2.14PHP 5.3.2

【问题讨论】:

  • 这应该去serverfault.com ?
  • 在这种情况下上传的文件有多大?在 apache 收到整个文件之前,脚本不会启动,并且 Apache 在请求完成之前不会写入访问日志,因此它可以将 http 响应代码与请求一起写入访问日志(例如 200 OK 或 500 错误)。我猜在这种情况下,在调用 PHP 之前上传文件大约需要 21 分钟。
  • 文件大约 0.5 MB。完整大小的文件位于服务器上的 tmp 文件夹中,等待 PHP 将其移动到位,所以我相当确定这不是一个缓慢的上传。

标签: php apache http post


【解决方案1】:

您确实应该检查服务器的内存 - 如果您上传的内存超出内存的处理能力,您可能会遇到问题。 PHP 在实际保存之前将所有上传的文件放入内存中,如果必须先将其写入交换文件,您将看到您所描述的这些问题。

【讨论】:

  • 你认为 0.5 MB 的文件可以做到这一点吗? Android 客户端提交一个条目,等待来自服务器的响应,然后提交另一个。是否有我应该检查或放置的日志来查找内存问题?
  • 上传时只需检查内存使用情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-20
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多