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