【发布时间】:2014-11-04 18:26:31
【问题描述】:
我在浏览器中开始下载的速度延迟(不是下载速度,而是点击下载链接和下载出现在浏览器中之间的时间)时遇到了一些问题。
我已经尽可能地简化了我的代码;
$filepath = $this->_resourceFile;
ob_start();
$start = microtime(true);
readfile($filepath);
$end = microtime(true) - $start;
Mage::log('Time taken to serve file was '.$end);
(您会看到这是 Magento 的一部分,我对 Magento 提供可下载产品文件的方式进行了大量编辑,以尝试加快速度。这在大多数情况下都有效,但我仍然遇到问题)
我放置的日志如下所示;
2014-10-23T14:19:15+00:00 DEBUG (7): Time taken to serve file was 0.067724943161011
2014-10-23T14:24:48+00:00 DEBUG (7): Time taken to serve file was 0.069678068161011
2014-10-23T14:25:58+00:00 DEBUG (7): Time taken to serve file was 0.080054998397827
2014-10-23T14:26:28+00:00 DEBUG (7): Time taken to serve file was 0.067059993743896
2014-10-23T14:27:27+00:00 DEBUG (7): Time taken to serve file was 0.068262100219727
2014-10-23T14:30:08+00:00 DEBUG (7): Time taken to serve file was 0.066760063171387
2014-10-23T14:36:34+00:00 DEBUG (7): Time taken to serve file was 90.616213083267
2014-10-23T14:45:11+00:00 DEBUG (7): Time taken to serve file was 0.065201997756958
2014-10-23T14:45:22+00:00 DEBUG (7): Time taken to serve file was 0.073112010955811
2014-10-23T14:46:56+00:00 DEBUG (7): Time taken to serve file was 87.481207132339
2014-10-23T14:47:44+00:00 DEBUG (7): Time taken to serve file was 36.195640087128
2014-10-23T14:47:48+00:00 DEBUG (7): Time taken to serve file was 0.067437887191772
2014-10-23T14:48:01+00:00 DEBUG (7): Time taken to serve file was 0.068021059036255
2014-10-23T14:48:06+00:00 DEBUG (7): Time taken to serve file was 0.028129100799561
2014-10-23T14:48:13+00:00 DEBUG (7): Time taken to serve file was 0.067390918731689
2014-10-23T14:49:00+00:00 DEBUG (7): Time taken to serve file was 0.065808057785034
2014-10-23T14:49:06+00:00 DEBUG (7): Time taken to serve file was 0.06847882270813
2014-10-23T14:49:48+00:00 DEBUG (7): Time taken to serve file was 0.063234090805054
2014-10-23T14:50:03+00:00 DEBUG (7): Time taken to serve file was 0.059723138809204
2014-10-23T14:50:08+00:00 DEBUG (7): Time taken to serve file was 0.068203926086426
2014-10-23T14:50:13+00:00 DEBUG (7): Time taken to serve file was 0.065500974655151
2014-10-23T14:50:16+00:00 DEBUG (7): Time taken to serve file was 0.064054012298584
2014-10-23T14:50:20+00:00 DEBUG (7): Time taken to serve file was 0.068597078323364
2014-10-23T14:50:24+00:00 DEBUG (7): Time taken to serve file was 0.026658058166504
2014-10-23T14:51:47+00:00 DEBUG (7): Time taken to serve file was 0.065510988235474
2014-10-23T14:51:56+00:00 DEBUG (7): Time taken to serve file was 0.06929087638855
2014-10-23T14:52:00+00:00 DEBUG (7): Time taken to serve file was 0.026684999465942
2014-10-23T14:52:32+00:00 DEBUG (7): Time taken to serve file was 0.067147016525269
2014-10-23T14:55:55+00:00 DEBUG (7): Time taken to serve file was 0.067998886108398
您会看到,在 0.06... 中,有 90 秒等待、87 秒等待和 36 秒等待。什么可能导致这些峰值?
该站点在 Linux 服务器上运行,使用 apache 和 nginx,使用 PHP5.3.3。会不会是服务器负载问题?我是否认为用户带宽应该与这种延迟几乎无关?
【问题讨论】:
-
耗时较长的文件有什么不同吗?类型、大小等
-
如果您在 Apache 中使用 PHP,请阅读
X-Sendfile。如果你在 Nginx 中使用 PHP,那么X-Accel-Redirect. -
@Jim - 不是真的,虽然它们不是同一个文件(大约 3 个的混合文件),但上面的所有日志都是使用大小约为 90mb 的 MP3 创建的。
-
我无法使用 X-SendFile 或 X-Accel-Redirect,因为我正在为我的文件设置自定义标头,似乎在几次下载后,文件在一定数量的时间内始终保持快速时间,几乎就像它被缓存一样。有人有什么建议吗?
标签: php apache magento nginx readfile