Foros del Web » Programando para Internet » PHP »

Problema con "file_get_contents" en PHP

Estas en el tema de Problema con "file_get_contents" en PHP en el foro de PHP en Foros del Web. Hola amigos, tengo un problema con "file_get_contents()" en PHP. Tengo un script (que hace algo parecido al que se adjunta) que es llamado desde JavaScript ...
  #1 (permalink)  
Antiguo 18/11/2015, 08:45
 
Fecha de Ingreso: noviembre-2015
Mensajes: 2
Antigüedad: 8 años, 5 meses
Puntos: 0
Problema con "file_get_contents" en PHP

Hola amigos,


tengo un problema con "file_get_contents()" en PHP.

Tengo un script (que hace algo parecido al que se adjunta) que es llamado desde JavaScript mediante AJAX desde múltiples usuarios.

En uno de los accesos, cuándo hay varios usuarios concurrentes, "file_get_contents" devuelve un string vacío, pero si accedo al fichero "data.txt", tiene texto.


Código PHP:

<?php          
  
if(file_exists("die.txt")){die();}
  
$file_path "data.txt";
 
$ficherofile file_get_contents($file_path);
 
if ((
$ficherofile === null || $ficherofile == "") && file_exists($file_path)){
  
file_put_contents("die.txt""a");
  die();
}
 
$ficherofile $ficherofile." - Incremental text";
 
file_put_contents($file_path ,$ficherofile);
  
echo 
"ok";
?>
El "die.txt" lo utilizo para parar el proceso y que no se me sobreescriba "data.txt" y poder comprobar que realmente sí tenía datos.

He intentado hacer la lectura y escritura del fichero mediante "fread" y "fwrite". También lo he probado mediante "flock" para que bloqueara el fichero si este estaba siendo utilizado y el problema persiste.

¿Alguien sabe qué puede estar pasando?

Muchísimas gracias.
  #2 (permalink)  
Antiguo 18/11/2015, 10:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con "file_get_contents" en PHP

Es bastante probable que la concurrencia como tu mismo planteas bloquee el acceso al archivo.

¿Solución?

No uses file_get_contents() todo el tiempo, usa un sistema de caché basado en memoria como APC o Memcached, así lees el archivo la primera vez y lo almacenas ahí, y las siguientes veces lo leerás de ahí y no del archivo, etc.

El hecho es que la concurrencia no se lleva bien con los lenguajes que son blocking como PHP, una caso de éxito sería NodeJS, que al ser non-blocking por naturaleza evitan este tipo problemas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/11/2015, 00:59
 
Fecha de Ingreso: noviembre-2015
Mensajes: 2
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Problema con "file_get_contents" en PHP

Lo del Memcached o APC es buena idea, el problema es que cada usuario introduce nuevos datos en el archivo, y/o actualiza datos que ya están en él, entonces creo que esa idea debo descartarla.

Voy a echar un vistazo a NodeJS.

Muchas gracias por tu respuesta.

Etiquetas: usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:22.