2012-06-05 9 views
5

Szukałem już od jakiegoś czasu, aby sprawdzić, czy możliwe jest "dołączenie" do pliku, jeśli używasz ob_start z PHP.Jak dołączyć do pliku za pomocą ob_start

Próbowałem następujące, ale nie działa. Jakikolwiek sposób na osiągnięcie tego?

<?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; 
} 
?> 

Pożyczyłem powyższy przykład z innego postu na S.O.

Odpowiedz

4

file_put_contents nie działa w ten sposób. Aby dołączyć, musisz ręcznie użyć fopen, fwrite i fclose.

$file = fopen($cacheFile, 'a+'); 
fwrite($file, $content); 
fclose($file); 
+1

'file_put_contents' faktycznie obsługuje dołączanie plików :) –

+0

@Jack: Tak naprawdę nie wiedziałem :-P Teraz robię! Zresztą zostawię to tutaj. –

+0

Dzięki rakiecie, pięknie pracowałeś. Pozdrawiam ~ –

6

Aby dołączyć używając file_put_contents() można po prostu przejść FILE_APPEND jako trzeci argument:

file_put_contents($cacheFile, $content, FILE_APPEND); 

To może być również używany do zastosowania plik blokujący za pomocą binarnego operatora OR, na przykład FILE_APPEND | LOCK_EX.

+1

Dzięki Jack, twój pracował również. Pozdrawiam ~ –

Powiązane problemy