سؤال
كيف يمكنني إنشاء ملف في PHP بحجم معين (بغض النظر عن المحتوى)؟
لا بد لي من إنشاء ملف أكبر من 1 جيجابايت. Arround 4-10GB كحد أقصى
المحلول
يمكنك الاستفادة من fopen
و 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.
عند التنفيذ:
$ php a.php
$ wc somefile.txt
0 1 100 somefile.txt
$
نصائح أخرى
إذا كان محتوى الملف غير ذي صلة ، فما عليك سوى وضعه - ولكن تأكد من أنك لا تنشئ متغيرًا كبيرًا جدًا بحيث لا يمكن حمله في الذاكرة:
<?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);
إذا كان يجب قراءة الملف بواسطة شيء آخر - فإن كيف تفعل ذلك يعتمد على الشيء الآخر الذي يحتاج إلى قراءته.
جيم
انظر إلى الكود الخاص بي في الأسفل
^^أفضل ميزة هنا مع 0S لإنشاء ملف 4GB ^^
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;
}
اختبارها ^ ^ ماكس في PHP 32bit 4 294 967 296:
streamfileDumme ('mydummyfile.iso' ، 4294967296) ؛
تريد الكتابة والقراءة وإبداع ملف دمية الرمز الخاص بي هنا ^^:
لا تنتمي إلى StackOverflow