¿Cómo puedo crear en PHP un archivo con un tamaño determinado (sin importar el contenido)?php create file with given size
Tengo que crear un archivo de más de 1GB. Arround 4-10GB máxima
¿Cómo puedo crear en PHP un archivo con un tamaño determinado (sin importar el contenido)?php create file with given size
Tengo que crear un archivo de más de 1GB. Arround 4-10GB máxima
Puede hacer uso de fopen
y fseek
define('SIZE',100); // size of the file to be created.
$fp = fopen('somefile.txt', 'w'); // open in write mode.
fseek($fp, SIZE-1,SEEK_CUR); // seek to SIZE-1
fwrite($fp,'a'); // write a dummy char at SIZE position
fclose($fp); // close the file.
En ejecución:
$ php a.php
$ wc somefile.txt
0 1 100 somefile.txt
$
Si el contenido del archivo es irrelevante a continuación, sólo pad - pero sí hacen Asegúrese de no generar una variable demasiado grande para guardarla en la memoria:
<?php
$fh = fopen("somefile", 'w');
$size = 1024 * 1024 * 10; // 10mb
$chunk = 1024;
while ($size > 0) {
fputs($fh, str_pad('', min($chunk,$size)));
$size -= $chunk;
}
fclose($fh);
Si el archivo tiene que ser legible por otra cosa, entonces la forma en que lo haga depende de la otra cosa que necesite leerlo.
C.
Mira mi código en la parte inferior
^^ La mejor característica es aquí con 0s para crear un archivo de 4 GB ^^
FUNCTION CreatFileDummy($file_name,$size) {
// 32bits 4 294 967 296 bytes MAX Size
$f = fopen($file_name, 'wb');
if($size >= 1000000000) {
$z = ($size/1000000000);
if (is_float($z)) {
$z = round($z,0);
fseek($f, ($size - ($z * 1000000000) -1), SEEK_END);
fwrite($f, "\0");
}
while(--$z > -1) {
fseek($f, 999999999, SEEK_END);
fwrite($f, "\0");
}
}
else {
fseek($f, $size - 1, SEEK_END);
fwrite($f, "\0");
}
fclose($f);
Return true;
}
prueba que ^^ Max en PHP 32 bits 4 294 967 296:
CreatFileDummy ('mydummyfile.iso', 4294967296);
¿Quieres escribir, leer y Creat archivo ficticio mi código está aquí ^^:
'fseek()' no altera el tamaño del archivo. – jmz
Ahora que ha editado el código para hacer un 'fwrite()', funciona, pero su respuesta original solo menciona 'fseek()'. En el futuro, debe proporcionar el código completo, como la versión editada, o explicar con más detalle. La persona que hace la pregunta no sabe cómo hacerlo, es por eso que pregunta. – jmz
esto falla cuando intento crear un archivo de más de 1 GB en un sistema de servidor de win 2003 (tengo todos los derechos, y es NTFS) – Mike