Un método simple (si se utiliza un servidor basado en Linux) es utilizar el comando exec
y ejecutar el comando split
:
exec('split Large.tar.gz -b 4096k SmallParts'); // 4MB parts
/* | | | | |
| | |______| |
App | | |_____________
The source file | |
The split size Out Filename
*/
Vea aquí para más detalles: http://www.computerhope.com/unix/usplit.htm
o puede utilizar: http://www.computerhope.com/unix/ucsplit.htm
exec('csplit -k -s -f part_ -n 3 LargeFile.tar.gz');
PHP se ejecuta dentro de un único subproceso y la única manera de aumentar este conteo de subprocesos es crear un proceso secundario usando los comandos fork
.
Esto no es adecuado para los recursos. Lo que sugeriría es buscar en un lenguaje que pueda hacerlo de manera rápida y efectiva. Sugeriría usar node.js.
Simplemente instale el nodo en el servidor y luego cree un pequeño script, llamado node_split
por ejemplo, que puede hacer el trabajo por sí mismo.
Pero lo hago fuertemente aconsejo que no utilice PHP para este trabajo, pero use exec para permitir que el sistema operativo del host lo haga.
Esta cuenta no es una tarea para PHP. ¿En qué sistema operativo estás –
'split -b 2048 m file.tar.gz pieces' using' exec() '? – alex
@alex Muy interesante .... –