2012-06-05 10 views
5

He buscado durante bastante tiempo, para ver si es posible "agregar" a un archivo si se usa ob_start con PHP.Cómo anexar al archivo usando ob_start

He intentado lo siguiente pero no funcionó. ¿Alguna forma de lograr esto?

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

Pedí prestado el ejemplo anterior de otra publicación en S.O.

Respuesta

4

file_put_contents no funciona de esa manera. Para agregar, necesita usar fopen, fwrite y fclose manualmente.

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

'file_put_contents' realmente admite el archivo adjunto :) –

+0

@Jack: Realmente no sabía eso :-P ¡Ahora sí! Dejaré esto aquí de todos modos. –

+0

Gracias Rocket, funcionó maravillosamente. Saludos ~ –

6

Para anexar utilizando file_put_contents() puede simplemente pasar FILE_APPEND como tercer argumento:

file_put_contents($cacheFile, $content, FILE_APPEND); 

También se puede utilizar para aplicar el bloqueo de archivos utilizando el operador OR binario, por ejemplo, FILE_APPEND | LOCK_EX.

+1

Gracias Jack, el tuyo también funcionó. Saludos ~ –

Cuestiones relacionadas