Foros del Web » Programando para Internet » PHP »

detener script php si se demora

Estas en el tema de detener script php si se demora en el foro de PHP en Foros del Web. Hola, Hemos colocado un cron que ejecuta un php cada pocos minutos para actualizar datos. No suele suceder, pero en ocasiones el script php se ...
  #1 (permalink)  
Antiguo 26/07/2011, 14:23
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 1
detener script php si se demora

Hola,

Hemos colocado un cron que ejecuta un php cada pocos minutos para actualizar datos. No suele suceder, pero en ocasiones el script php se bloquea y no acaba nunca (todavía estamos averigüando por qué). Entonces me gustaría saber cómo podemos detener el script si se lleva ejecutando más de 120 segundos por ejemplo, para evitar que se junte con la ejecución de nuevo del script, lo que provoca un meneo importante en la BBDD.

¿Alguna sugerencia?

Gracias,
  #2 (permalink)  
Antiguo 26/07/2011, 14:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: detener script php si se demora

Yo creo que la solución sería mediante un bloqueo lógico, al iniciar el script crear un archivo cualquiera.

Previamente en el mismo script comparas si existe dicho archivo, si ya existe simplemente evitas procesar el resto del script.

Al finalizar el proceso simplemente eliminas el archivo, y el siguiente script podrá ejecutarse tranquilamente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/07/2011, 14:42
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: detener script php si se demora

Gracias pateketrueke.. voy a probarlo.

Puedo hacer que inserte en ddbb o en un archivo un dato, ok? pero si existe el dato, o sea que significa que el anterior script no ha finalizado. ¿Cómo mato el script en ejecución? Con un die() podría hacerlo?

Estaba mirando si a la cron task se le puede poner un límite de tiempo, pero me temo que no...

Gracias!
  #4 (permalink)  
Antiguo 26/07/2011, 14:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: detener script php si se demora

Si, claro.

Cualquier dato que consideres útil, la idea es general el bloqueo de algún modo.

Y efectivamente, con usar die() o exit; bastaría para finalizar el script.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/07/2011, 15:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: detener script php si se demora

Vale ok.. una cosa más, perdona, es que el tema php no lo domino. El cron llama a archivo.php y archivo.php se compone de:

Código:
<?php

require 'bootstrap.php';

require_once 'download.php';
require_once 'pre-process.php';
require_once 'process.php';

?>
Si añado entre el bootstrap.php y los require_once la comprobación, y me da que el script sigue en ejecución, con colocar ahí en medio un die(); bastaría? un if ($result) { die(); }

Muchísimas gracias, aquí apurando el día con la pantalla...
  #6 (permalink)  
Antiguo 26/07/2011, 15:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: detener script php si se demora

Lo ideal es que manejes la comprobación directamente en el script que incluye todo, antes de todo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 26/07/2011, 15:08
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: detener script php si se demora

Vale, pues perfecto, muchas gracias, voy con ello!
  #8 (permalink)  
Antiguo 26/07/2011, 15:29
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: detener script php si se demora

Hola pateketrueke,

¿Qué te parece este código del archivo.php que llama el cron?

Código:
<?php
echo date('H:i:s').'<br>';

require 'bootstrap.php';

$result = db_query('SELECT id FROM {security}')->fetchField();

if ($result == 0) {

	$query = db_update('security');
	$query->fields(array(
	  'id' => '1',
	));
	$query->execute();

	require_once 'download.php';
	require_once 'pre-process.php';
	require_once 'process.php';
	 
	$query = db_update('security');
	$query->fields(array(
	  'id' => '0',
	));
	$query->execute();

} else {
	
	$query = db_update('security');
	$query->fields(array(
	  'id' => '0',
	));
	$query->execute();
	
	die();
}

echo date('H:i:s').'<br>';

?>
Gracias!

Etiquetas: cron, jobs
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 19:42.