Простой метод (если используется сервер на базе Linux) - использовать команду exec
и выполнить команду split
:
exec('split Large.tar.gz -b 4096k SmallParts'); // 4MB parts
/* | | | | |
| | |______| |
App | | |_____________
The source file | |
The split size Out Filename
*/
Подробнее см. Здесь: 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');
PHP работает в одном потоке, и единственный способ увеличить количество потоков - создать дочерний процесс с помощью команд fork
.
Это не дружественный ресурс. Я бы посоветовал взглянуть на язык, который может сделать это быстро и эффективно. Я бы предложил использовать node.js.
Просто установите узел на сервере, а затем создайте небольшой скрипт, например, под названием node_split
, который может выполнить работу самостоятельно.
Но я настоятельно советую вам не использовать PHP для этой работы, а использовать exec, чтобы позволить операционной системе хоста сделать это.