2012-06-05 11 views
5

Ho cercato per un po 'ora, per vedere se è possibile "aggiungere" ad un file se si utilizza ob_start con PHP.Come aggiungere al file usando ob_start

Ho provato quanto segue ma non ha funzionato. Qualche modo per raggiungere questo?

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

Ho preso in prestito l'esempio precedente da un altro post su S.O.

risposta

4

file_put_contents non funziona in questo modo. Per aggiungere, è necessario utilizzare fopen, fwrite e fclose manualmente.

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

'file_put_contents' supporta effettivamente l'aggiunta di file :) –

+0

@Jack: In realtà non lo so :-P Ora lo so! Lascerò questo qui comunque. –

+0

Grazie Rocket, ha funzionato magnificamente. Cheers ~ –

6

Per aggiungere utilizzando file_put_contents() si può semplicemente passare FILE_APPEND come terzo argomento:

file_put_contents($cacheFile, $content, FILE_APPEND); 

Può anche essere usato per applicare file di blocco utilizzando l'operatore OR binario, ad esempio FILE_APPEND | LOCK_EX.

+1

Grazie Jack, anche il tuo ha funzionato. Acclamazioni ~ –

Problemi correlati