मैं PHP में किसी दिए गए आकार के साथ फ़ाइल कैसे बना सकता हूं (सामग्री चाहे कोई फर्क नहीं पड़ता)?php दिए गए आकार के साथ फ़ाइल बनाएं
मुझे 1 जीबी से बड़ी फ़ाइल बनाना है। Arround 4-10GB अधिकतम
मैं PHP में किसी दिए गए आकार के साथ फ़ाइल कैसे बना सकता हूं (सामग्री चाहे कोई फर्क नहीं पड़ता)?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);
अगर फ़ाइल को किसी अन्य चीज़ द्वारा पठनीय किया जाना है - तो आप इसे कैसे करते हैं, इसे दूसरी चीज़ पर निर्भर करता है जिसे इसे पढ़ने की आवश्यकता होती है।
सी
तल
पर अपने कोड देखो ^^ सबसे अच्छा सुविधा के लिए एक 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 32 बिट में मैक्स ^^ पैदा करने के लिए 0 के साथ यहाँ है 4 2 9 4 9 7 9 2 9 6:
CreatFileDummy ('mydummyfile.iso', 4294967296);
आप लिखें चाहते हैं, पढ़ें और बनाएं फ़ाइल डमी मेरी कोड है यहाँ ^^:
'fseek()' फ़ाइल आकार में परिवर्तन नहीं करता। – jmz
अब जब आपने 'fwrite() 'करने के लिए कोड संपादित किया है, तो यह काम करता है, लेकिन आपके मूल उत्तर में केवल' fseek()' का उल्लेख किया गया है। भविष्य में, आपको पूर्ण संस्करण देना चाहिए, जैसे संपादित संस्करण, या अधिक विस्तार से समझाएं। सवाल पूछने वाले व्यक्ति को यह नहीं पता कि यह कैसे करना है, यही कारण है कि वह पूछ रहा है। – jmz
यह विफल रहता है जब मैं एक जीत 2003 सर्वर सिस्टम पर 1 जीबी से अधिक फ़ाइल बनाने की कोशिश करता हूं (मेरे पास सभी अधिकार हैं, और यह एनटीएफएस है) – Mike