Сгенерить файл определенного размера

caspersky

Создатель
Регистрация
7 Июл 2008
Сообщения
18
Реакции
0
ТЗ - указываю скрипту размер, на выходе файл забитый случайными данными?
 
PHP:
<?php
$a=1;
$file="test.txt";//путь к файлу
$r=1000;//требуемый размер файла,если принимать из формы то например $_POST['size']
for($i=1; $i<=$r; $i++){
$s.=$a; //забиваем файл единицами
}
file_put_contents($file, $s);//перезаписываем файл
?>
или так
PHP:
<?php
$a=1;
$file="test.txt";//путь к файлу
$r=1000;//требуемый размер файла,если принимать из формы то например $_POST['size']
$s=array_fill(0,$r, $a); //забиваем файл единицами
file_put_contents($file, $s);//перезаписываем файл
?>
 
если размер небольшой то лучше использовать
Скрытое содержимое доступно для зарегистрированных пользователей!

если большой- больше чем выделено для пхп- то конструкцию
PHP:
for(){
fwrite($fp, str_repeat())
}
+ это забъёт файл только повторяющимися значениями. нужны именно случайный набор?
 
PHP:
$size = 1000000; //миллион байт
$f = fopen('file.txt', 'w');

//100 байт случайных данных
for($i=0;$i<100;$i++){
    fseek($f, rand(1, $size-1), SEEK_SET);
    fwrite($f, rand(1, 9));
}

//файл подгоняем под нужный размер
fseek($f, $size-1, SEEK_SET);
fwrite($f, '1');

fclose($f);
 
Я когда то тоже такое писал для запуска на хостинге :)
Решение "черезжопное", но зато проц грузит слабо -

<?php
$fsize = 1500000;
$fsect = 12500; // 12500*8/2 = 50000 байт
$fname = 'test.txt';

if (!$fh = @fopen($fname, 'a')) die("Cannot open file ($fname)");
for($i = 1; $i <= $fsect; $i++) {
$rand_tmp1 = mt_rand(100, -2123456789);
$rand_tmp2 = mt_rand(100, 2123456789);
$rand_blok .= pack("ll", $rand_tmp1, $rand_tmp2);
}

if (@fwrite($fh, $rand_blok) === FALSE) die("Cannot write to file ($fname)");
clearstatcache();
$fstat = fstat($fh);
@fclose($fh);
if ($fstat['size'] >= $fsize) die("Finish!");
header('Location: '.$_SERVER['PHP_SELF']);

?>
 
немного подправлю то что предложил дино.
PHP:
<?php
$file="test.txt";//путь к файлу
$size=1000; //требуемый размер файла
$s='';
for($i=1; $i<=$size; $i++){
$s.=chr(rand(0,255)); //забиваем файл единицами
}
file_put_contents($file, $s);//перезаписываем файл
?>
 
Назад
Сверху