使用PHP拆分大文件

Mih*_*hir 11 php split file

我想从PHP代码中拆分多个部分的大文件(具体来说,tar.gz文件).这样做的主要原因是,php的2gb限制在32bit系统上.

所以我想分割多个部分的大文件并单独处理每个部分.

这可能吗?如果有,怎么样?

ale*_*lex 9

我的评论被投了两次,所以也许我的猜测是:P

如果在unix环境中,试试这个......

exec('split -d -b 2048m file.tar.gz pieces');
Run Code Online (Sandbox Code Playgroud)

分裂

你的作品应该是pieces1,pieces2

您可以通过stat()在PHP中使用来获取文件大小,然后进行简单的数学运算(int) ($stat['size'] / 2048*1024*1024)(我认为),从而轻松获得生成的数量.


Rob*_*itt 8

一个简单的方法(如果使用基于Linux的服务器)是使用该exec命令并运行split命令:

exec('split Large.tar.gz -b 4096k SmallParts'); // 4MB parts
/*    |     |            |      | |
      |     |            |______| |
      App   |                 |   |_____________
            The source file   |                 |
                              The split size    Out Filename
*/
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参见此处:http://www.computerhope.com/unix/usplit.htm

或者您可以使用:http://www.computerhope.com/unix/ucsplit.htm

exec('csplit -k -s -f part_ -n 3 LargeFile.tar.gz');
Run Code Online (Sandbox Code Playgroud)

PHP在单个线程中运行,增加此线程数的唯一方法是使用fork命令创建子进程.

这不是资源友好的.我建议的是研究一种能够快速有效地完成这项工作的语言.我建议使用node.js.

只需在服务器上安装节点,然后创建一个小脚本,node_split例如,可以为您自己完成工作.

但我强烈建议您不要将PHP用于此作业,而是使用exec来允许主机操作系统执行此操作.


Vin*_*rat 0

  • 如果你想分割服务器上已有的文件,你可以这样做(只需使用文件函数 fread、fopen、fwrite、fseek 来读/写文件的一部分)。
  • 如果你想分割客户端上传的文件,恐怕不行。