2012-06-05 16 views
5

Şimdilik bir süre için, ob_start'ı PHP ile kullanıyorsanız, bir dosyaya “ekleme” yapılıp yapılamayacağını inceledim.ob_start kullanılarak dosyaya nasıl eklenir

Aşağıdakileri denedim ama çalışmadım. Bunu gerçekleştirmenin herhangi bir yolu var mı?

<?php 

$cacheFile = 'file.txt'; 

if ((file_exists($cacheFile)) && ((fileatime($cacheFile) + 600) > time())) 
{ 
$content = file_get_contents($cacheFile); 
echo $content; 
} else 
{ 
ob_start(); 
// write content 
echo '<h1>Hello world</h1>'; 
$content = ob_get_contents(); 
ob_end_clean(); 
file_put_contents($cacheFile,$content,'a+'); // I added the a+ 
echo $content; 
} 
?> 

Yukarıdaki örneği S.O.'daki başka bir gönderiden ödünç aldım.

cevap

4

bu şekilde çalışmıyor. Eklemek için, fopen, fwrite ve fclose'u elle kullanmanız gerekir.

$file = fopen($cacheFile, 'a+'); 
fwrite($file, $content); 
fclose($file); 
sadece üçüncü argüman olarak FILE_APPEND geçebilir file_put_contents() kullanarak eklemek için
+1

'file_put_contents' aslında dosya ekleme işlemini destekliyor :) –

+0

@Jack: Aslında bunu bilmiyordum :-P Şimdi yapıyorum! Bunu burada bırakacağım. –

+0

Teşekkürler Roket, güzel çalıştı. Şerefe ~ –

6

:

file_put_contents($cacheFile, $content, FILE_APPEND); 
Ayrıca ikili VEYA operatörünü kullanarak kilitleme dosyası uygulamak için kullanılabilir

, örneğin FILE_APPEND | LOCK_EX.

+1

Teşekkürler Jack, seninki de çalıştı. Şerefe –