Foros del Web » Programando para Internet » PHP »

Archivo escribible por varios usuarios a la vez

Estas en el tema de Archivo escribible por varios usuarios a la vez en el foro de PHP en Foros del Web. Hola estoy haciendo un pqeueño sistema para insertar comentarios y editarlos , el caso es que podrían acceder varios usuarios al mismo archivo con las ...
  #1 (permalink)  
Antiguo 25/05/2014, 18:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 12 años
Puntos: 20
Archivo escribible por varios usuarios a la vez

Hola estoy haciendo un pqeueño sistema para insertar comentarios y editarlos , el caso es que podrían acceder varios usuarios al mismo archivo con las informaciones , usando este simple script :

Código PHP:
<?php
    $fp
=fopen("comments.txt","a");
    
fputs($fp,$_REQUEST['message']."\n");
    
fclose($fp);
?>
He escuchado que se puede usar flock para pausar esto o que varios usuarios puedan escribir a la vez , a ver que me podeís contestar , muchas gracias


Saludos
  #2 (permalink)  
Antiguo 25/05/2014, 18:40
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 12 años, 8 meses
Puntos: 292
Respuesta: Archivo escribible por varios usuarios a la vez

Y cual es la duda ? si entras al manual veras su uso:

Código PHP:
Ver original
  1. if (flock($fp, LOCK_EX)) {  // adquirir un bloqueo exclusivo
  2.     $fp=fopen("comments.txt","a");
  3.     fputs($fp,$_REQUEST['message']."\n");
  4.     fflush($fp);            // volcar la salida antes de liberar el bloqueo
  5.     flock($fp, LOCK_UN);    // libera el bloqueo
  6.     fclose($fp);
  7. } else {
  8.     throw new Expecption("No se pudo obtener el bloqueo!");
  9. }

Recuerda que hay MODOS de operacion... no se cual te interese ocupar:

Cita:
operation es una opción de las siguientes:

LOCK_SH para solicitar un bloqueo compartido (lectura).
LOCK_EX para solicitar un bloqueo exclusivo (escritura).
LOCK_UN para solicitar un desbloqueo (compartido o exclusivo).

También es posible añadir LOCK_NB como una máscara de bit a una de las operaciones de arriba si no se desea que flock() bloquee mientras opera. (no soportado en Windows)
__________________
Salu2!
  #3 (permalink)  
Antiguo 25/05/2014, 18:57
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 12 años
Puntos: 20
Respuesta: Archivo escribible por varios usuarios a la vez

Gracias italico , la duda sería si es factible que lean por ejemplo los comentarios se ese archivo y al mismo tiempo puedan insertar pues otro post y algún usuario modificar uno de los posts que hizo

Basicamente sería eso , ya que pregunte en un foro hace poco y me llamaron de todo por simplemente hacer uso de un flat file - me quedé sorprendido hasta me insultaron por simplemente nombrar los flat files , que si era algo viejo , que si mysql que si sqlite y es que como dije no me interesba usar esa otra tecnología , no sabía que eso fuera un pecado - cuando es algo habitual y no le veo nada malo su uso

Yo los he usado los flat files y uso para cosillas pasa que en este caso no queiro poner un archivo indivdual para cada comentario sino uno solo y la única duda es si podría ejecturar estas acciones , muchas gracias por tu respuesta a ver que me puedes comentar , saludos
  #4 (permalink)  
Antiguo 25/05/2014, 21:16
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 12 años, 8 meses
Puntos: 292
Respuesta: Archivo escribible por varios usuarios a la vez

Si hablas de posts y de comentarios ...estas hablando de base de datos, no entiendo porque quieres hacer un blog o CMS con archivos de texto.

Sino tienes posibilidad de crear una base de datos en MySQL por ejemplo (por alguna razon que no explicas)... podrias usar SQLite aunque el tema de la concurrencia.


Por otro lado... aun manejando tablas en archivos de textos: "posts" y "comentarios" serian tablas (o archivos) distintos......

Si insistes en hacerlo asi... con archivos... mira los MODOS por si quieres que varias personas puedan *eventualmente* leer / escribir los mismos archivos al tiempo
__________________
Salu2!

Etiquetas: usuarios, vez
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 08:33.