【问题标题】:PHP Compress large file make server can not respondPHP压缩大文件使服务器无法响应
【发布时间】:2013-11-27 14:29:14
【问题描述】:

我的网站有很多音乐和图片资源。

用户可以登录我的网站并下载这些资源。 当用户单击“下载”按钮时,PHP 将压缩这些选定的文件,然后用户将下载压缩文件(zip)。

问题是:

当 PHP 压缩文件时,其他用户访问我的网站会被 等待响应直到压缩完成

所以:

如何进行PHP压缩,同时用户也可以访问我的网站 快吗?

【问题讨论】:

  • 除非您提供原始 .bmp 或 .wav 文件,否则重新压缩压缩格式几乎没有意义。 .jpg 和 .mp3 类型的文件通常开始时几乎是不可压缩的。
  • 为什么不预先压缩所有文件,然后在他们需要的时候给他们。
  • tar 的 CPU 成本会低于 zip
  • 实现一个异步“压缩”队列,就像 facebook 和 google 一样。使用 cronjob 或 CLI 脚本,完成后,向用户发送一封包含下载链接的电子邮件。不用担心时间了=)

标签: php


【解决方案1】:

首先回复 Marc B 和 Crafter。通过将文件压缩为 zip 存档,您可以一次发送多个文件。此选项通常用于文件和图像托管。例如,您可以通过这种方式从 Google+ 相册下载所有照片。

现在,关于问题。首先要做的是将压缩级别设置为零,因为压缩不是您真正想要的。将压缩设置为零,您将在开始时发送(这里我简化一点)带有 ZIP 标头的连接文件。如果您使用某种输出缓冲,则最好禁用此功能。

另外,如果你使用 Apache,你可以考虑迁移到 NGINX+PHP-FPM。它可以更好地处理此类任务。

【讨论】:

  • 感谢您的回复,我仔细阅读了您的回复,并尝试使用pclzipZipArchive,但是这两个zip工具似乎可以不设置压缩级别。您能否推荐一些可以设置压缩级别的zip工具。谢谢
  • 如果你使用 pclzip,你必须添加带有 PCLZIP_OPT_NO_COMPRESSION 标志的每个文件作为第二个参数。
  • 这个标志的意思是不压缩吗?,只是将这些文件合并为一个zip文件?
  • 我在参数中添加了 PCLZIP_OPT_NO_COMPRESSION 标志,但问题又来了
  • 对。它会将多个文件粘贴到一个文件中。 “但问题又来了”到底是什么意思?
猜你喜欢
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
相关资源
最近更新 更多