Foros del Web » Programando para Internet » PHP »

Como saber si un archivo esta abierto?

Estas en el tema de Como saber si un archivo esta abierto? en el foro de PHP en Foros del Web. Tengo un problema en un sitio, necesito escribir una lista en un xml, esta lista se llena cada vez que se completa una accion del ...
  #1 (permalink)  
Antiguo 04/08/2011, 18:04
 
Fecha de Ingreso: junio-2008
Ubicación: Armenia- Colombia || El tigre - Venezuela
Mensajes: 34
Antigüedad: 15 años, 10 meses
Puntos: 1
Pregunta Como saber si un archivo esta abierto?

Tengo un problema en un sitio, necesito escribir una lista en un xml, esta lista se llena cada vez que se completa una accion del usuario. El problema es que el xml esta obviando algunos datos y mi sospecha es que el archivo esta abierto en ese momento.

He intentado de dos formas y no funciona ninguna de las 2

Código PHP:
$i=1;
        while(
$result<=0){
            
            
$File "archivo_xml_".$i.".xml";                                        
            
$result exec('lsof | grep '.$File.' | wc -l');

            if(!(
$result 0)) {
                      
               
$myFile=$File;
               break;
                
            }
            if(
$i==3) break;
            
$i++;
        } 
Y con fopen

Código PHP:
$i=1;
        while(
$result<=0){
            
$File "archivo_xml_".$i.".xml"
            
            
$result = @fopen($File"r");
            if(
$result) {
               
               
$myFile $File;
               break;           
            }
            
$i++;
            if(
$i==4){
                break;
            }
        
        } 
Y ya tomaria $myFile para usarlo mas abajo como lo necesite, (anexar el nuevo tag).

Le he dado vueltas ya casi 12 horas a esto y no he podido solucionarlo.

Espero alguien me pueda ayudar.
  #2 (permalink)  
Antiguo 04/08/2011, 20:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Como saber si un archivo esta abierto?

Una forma de hacerlo es que antes de que edites escribas en algún campo de alguna base de datos que abriste el archivo, lo abres y editas, si otro va a trabajar con el archivo no lo puede abrir si ve que en la base de datos hay un campo que dice que el archivo tal está abierto por tal persona, y no podrá trabajarlo hasta que la persona lo cierre e indique a la base de datos que ya cerro el archivo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 04/08/2011, 21:35
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Como saber si un archivo esta abierto?

Hola,

El problema vendría siendo si el archivo está abierto por otro proceso que no esté realizado en PHP o no tenga acceso a la base de datos. Normalmente se usa bloqueo de archivos a nivel del OS, se usa para asegurarse que el archivo no esté abierto de modo exclusivo por otro proceso o para solicitar un bloqueo exclusivo por nuestra aplicación.

Posiblemente, dependiendo de la aplicación te podría ser útil:
http://www.php.net/manual/es/function.flock.php

Saludos,

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 12:06.