Foros del Web » Programación para mayores de 30 ;) » Programación General »

problemas por dos scripts que pelean por un archivo de datos!!!!

Estas en el tema de problemas por dos scripts que pelean por un archivo de datos!!!! en el foro de Programación General en Foros del Web. hola en un sitio web que desarolle usando CGI tengo el siguiente codigo para sacar la informacion de un archivo a un arreglo en el ...
  #1 (permalink)  
Antiguo 18/04/2006, 17:13
 
Fecha de Ingreso: septiembre-2001
Mensajes: 186
Antigüedad: 23 años, 2 meses
Puntos: 0
problemas por dos scripts que pelean por un archivo de datos!!!!

hola

en un sitio web que desarolle usando CGI tengo el siguiente codigo para sacar la informacion de un archivo a un arreglo en el programa en


$abrir="info.txt";
open(abrir);
@informa=<abrir>;
close(abrir);


y en OTRO SCRIPT del mismo sitio tengo

$abrir="info.txt";
open(abrir);
@informa=<abrir>;
close(abrir);
unlink("info.txt");
$FILE="info.txt";
open(archivconf,">".$FILE);
foreach(@informa)
{
$linea="cualquier cosa";
$linea.="\n";
print archivconf ($linea);
}
close(archivconf);


y tengo el siguiente problema : el sitio comenzo a ser muy visitado y mis visitantes estan ejecutando ambos scripts, o sea que el mismo archivo aveces es abierto para lectura en el script1 y aveces es abierto para escritura en el script2 como el sitio es muy visitado, aaveces sucede que se daña el archivo y creo que es cuestion de concurrencia sobre el mismo archivo de datos "info.txt" .

Como puedo hacer que el archivo sea abierto de manera exclusiva por un script o por lo menos no tener problemas de sincronia y no dañar mis datos cuando los visitantes, (muchos) puedan estar ejecutando diferentes aperturas del mismo archivo ?

Gracias por colaborarme, soy asiduo programador de CGI y tengo esta duda gracias por la ayuda.
__________________
Los mejores programadores de colombia estan aqui!!!!!
http://progcol.tripod.com
  #2 (permalink)  
Antiguo 18/04/2006, 19:07
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Hola primero que nada para abrir el archivo y escribirlo no necesitas borrarlo antes, cuando lo abres con > PERL elimina todo el contenido automáticamente...

Ahora bien, siempre, SIEMPRE que abras un archivo debes lockearlo, o sea decir si lo usarás para escribirlo (así nadie más lo lee) o solo lo usarás para leerlo ( con lo cual otros procesos pueden también leerlo, pero no escribirlo)

Un ejemplo...

open(FILE,">file.txt");
flock(FILE,2); #LO LOCKAMOS PARA ESCRIBIR, NADIE PODRÁ USARLO
print FILE "hey";
close FILE;

Más info
http://www.forosdelweb.com/showpost....7&postcount=11

Espero que te sirva
Saludos
__________________
Esteban Quintana
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 23:07.