2011-12-02 20 views
10

मेरे पास एक छोटी php स्क्रिप्ट है जो फ़ाइल के अंतिम अक्षर को हटा देती है।PHP - फ़ाइल के अंतिम अक्षर को हटाएं

$contents = file_get_contents($path); 
rtrim($contents); 
$contents = substr($contents, 0, -1); 
$fh = fopen($path, 'w') or die("can't open file"); 
fwrite($fh, $contents); 
fclose($fh);  

तो यह फ़ाइल सामग्री में पढ़ता है, बंद स्ट्रिप्स अंतिम वर्ण और फिर फ़ाइल ट्रंकेटस और स्ट्रिंग इसे वापस लिखता है। यह सब ठीक काम करता है।

मेरी चिंता यह है कि इस फ़ाइल में बहुत अधिक डेटा हो सकता है और file_get_contents() कॉल तब इस डेटा को स्मृति में रखेगी जो संभावित रूप से मेरी सर्वर मेमोरी को अधिकतम कर सकती है।

क्या फ़ाइल से अंतिम अक्षर को पट्टी करने का कोई और अधिक प्रभावी तरीका है?

धन्यवाद

उत्तर

21

इस

$fh = fopen($path, 'r+') or die("can't open file"); 

$stat = fstat($fh); 
ftruncate($fh, $stat['size']-1); 
fclose($fh); 

अधिक मदद के लिए प्रयास करें देखने this

+0

0 करने के लिए फ़ाइल को काटना प्रतीत होता है कि ..? - आह शायद क्योंकि फॉपेन डब्ल्यू का उपयोग कर रहा है। इसे आर पर सेट करना हालांकि काम नहीं करता है? – sulman

+0

@ सुल्मन - – azat

+0

अपडेट किया गया बहुत बहुत धन्यवाद। अब महान काम करता है :) – sulman

संबंधित मुद्दे