Google
Web dns.bdat.net

Re: [PHP-ES] Re: Bloqueo de archivos, flock()

Write haof XML files: mktb ( ultradarpa(EN)yahoo.es)
Fecha: mié 16 feb 2005 - 20:57:39 CET


Hola Rafael,

> El que el segundo script "espere" a que se "desbloquee" el archivo es,
> seguramente, porque tú le has hecho esperar. Si el primer script lo
> bloqueara por 30 seg, y el segundo sólo esperara 25 seg verías, muy
> probablemente, que tampoco esperó a que se liberara.

Esos dos scripts son totalmente iguales, salvo que uno hace un sleep() de 28
segundos y el otro no.
Así, el script que dura 28 segundos [A], retiene el archivo bloqueado todo
ese tiempo, impidiendo que el otro script [B], acceda al instante al
archivo, y tenga que esperar a que el script [A] lo libere.

Aquí pongo el código de ambos scripts por si es de interes:

---
// A-bloqueador-28.php
$file = fopen('c:\texto.txt', 'r');
flock($file, 2);
sleep(28);
flock($file, 3);
fclose($file);
// B-script.php
$file = fopen('c:\texto.txt', 'r');
flock($file, 2);
flock($file, 3);
fclose($file);
---
P.D: Algo que no tiene mucho que ver con el tema, pero me ha venido ahora en
mente... Los que nombrais las variables con prefijos para identificar su
tipo, que le poneis al valor devuelto por fopen()? $p... de pointer? $r...
de resource? $f... de file? que?
----- Original Message ----- 
From: "Rafael" <rsalazar(EN)ucol.mx>
To: <php-es(EN)lists.php.net>
Sent: Wednesday, February 16, 2005 6:40 PM
Subject: [PHP-ES] Re: Bloqueo de archivos, flock()
> Si entiendo bien, el comportamiento "con o sin" VB es el mismo, es
> decir, se bloquea el archivo y los scripts siguientes sólo intentan
> acceder a éste, fallando si está protedigo.
>
> El que el segundo script "espere" a que se "desbloquee" el archivo es,
> seguramente, porque tú le has hecho esperar.  Si el primer script lo
> bloqueara por 30 seg, y el segundo sólo esperara 25 seg verías, muy
> probablemente, que tampoco esperó a que se liberara.
>
> Por último, me parece un tanto lógico que no espere a que se libere el
> archivo, ya que el tiempo de la conexión tiene un límite (y tambien
> puede cargar al micro con tareas inecesarias), en todo caso lo mejor
> sería dar la opción al usuario (o programador) de re-intentar pasado un
> tiempo adecuado re-invocando al mismo script -espero darme a entender.
-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 265.8.8 - Release Date: 14/02/2005
-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Este archivo fue generado por hypermail 2.1.7 : sáb 19 mar 2005 - 01:01:24 CET