Foros del Web » Programando para Internet » PHP »

Controlar proceso repetitivo

Estas en el tema de Controlar proceso repetitivo en el foro de PHP en Foros del Web. Hola, en mi servidor hay una opción en la que puedes hacer que se ejecute un script cada x minutos. El tema es que yo ...
  #1 (permalink)  
Antiguo 18/09/2013, 10:50
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 17 años, 9 meses
Puntos: 15
Controlar proceso repetitivo

Hola,

en mi servidor hay una opción en la que puedes hacer que se ejecute un script cada x minutos.

El tema es que yo le pongo cada 2 minutos y este script, por razones que no aportan nada, normalmente dura en torno a 1:50 y algunas raras veces hasta los 6 min e incluso más.

El tema es que el script se ejecuta en ocasiones muchas veces a la vez y me dicen que tengo que solucionar el tema porque se les cae el servidor.

Me han aconsejado esto:

Código PHP:
<?php
$fp 
fopen('/tmp/lock.txt''r+');

/* Activar la opción LOCK_NB sobre una operación LOCK_EX */
if(!flock($fpLOCK_EX LOCK_NB)) {
    echo 
'No se puede obtener el bloqueo';
    exit(-
1);
}

/* ... */

fclose($fp);
?>
Es el ejemplo #2 de aquí: http://www.php.net/manual/es/function.flock.php

Mi pregunta es si eso soluciona el tema y qué hace concretamente el script, según me han dicho no permitir que se ejecute de nuevo el script hasta que se haya terminado el script anterior.

Intuyo que lock.txt será mi archivo .php donde está el script.
  #2 (permalink)  
Antiguo 18/09/2013, 10:59
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 15 años, 6 meses
Puntos: 194
Respuesta: Controlar proceso repetitivo

En la documentación lo explica, se bloquea el archivo para que no pueda ser ejecutado nuevamente hasta que no termine la ejecución actual. Igualmente el problema de raiz existe en tu script que consume una cantidad exponencial de recursos.

Seria prudente que nos presentes la idea y el código para poder proponerte alternativas, porque la solución que te plantean solo impedirá el consumo de recursos, pero al mismo tiempo evitara que se ejecute tu script.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #3 (permalink)  
Antiguo 18/09/2013, 15:35
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 17 años, 9 meses
Puntos: 15
Respuesta: Controlar proceso repetitivo

Ok, pregunta, donde pone lock.txt tengo que poner el nombre de mi script? me refiero al que se queda colgado a veces, pongamos fichero.php
  #4 (permalink)  
Antiguo 18/09/2013, 15:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 8 meses
Puntos: 2135
Respuesta: Controlar proceso repetitivo

No, simplemente esta usando ese archivo (/tmp/lock.txt) como temporal para bloquear, eso hace que nadie maś lo pueda abrir, solamente se usa para eso, el resto de tu proceso debe de seguir igual.
  #5 (permalink)  
Antiguo 18/09/2013, 16:22
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 17 años, 9 meses
Puntos: 15
Respuesta: Controlar proceso repetitivo

Pero es lock.txt tiene que existir? vacío?

Mi script entonces va donde pone /* ... */?
  #6 (permalink)  
Antiguo 18/09/2013, 16:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 8 meses
Puntos: 2135
Respuesta: Controlar proceso repetitivo

Así es, tienes que crear el archivo, el contenido no importa, lo único importante es que se usa como "puente" para prevenir que otros scripts se ejecuten.

Saludos.

Etiquetas: controlar, proceso
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 01:21.