Foros del Web » Programando para Internet » PHP »

Temporizador en PHP

Estas en el tema de Temporizador en PHP en el foro de PHP en Foros del Web. Hola a todos, estoy desarrolando una aplicación como proyecto de fin de carrera, y una de las "cosas" que tiene que hacer es: -Todos los ...
  #1 (permalink)  
Antiguo 10/06/2008, 03:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Temporizador en PHP

Hola a todos,
estoy desarrolando una aplicación como proyecto de fin de carrera, y una de las "cosas" que tiene que hacer es:
-Todos los días compruebe si hay que modificar algún dato en la BD o mandar correos al administrador o usuarios.

En otro proyecto que realiza las mismas tareas, pero con ASP.NET, he visto que utiliza como temporizador una clase "Timer" y para activarla utiliza los servicios de windows.

Mi duda es,¿cómo puedo hacer esto en PHP,con servidor Apache y utilizando windows?
  #2 (permalink)  
Antiguo 10/06/2008, 04:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Temporizador en PHP

en algunos programas que he desarrollado he echo algo parecido.

Mi método es el siguiente:

1.- Script php que realice las comprobaciones y envie los email correspondientes.
2.- Lanzar el script a una determianda hora con cron (en linux)

En windows podrias por ejemplo utilizar visual cron para lanzar el script cuando quieras. http://visualcron.softonic.com/

Creo que se acerca a lo que quieres, no ?

Última edición por nx00; 10/06/2008 a las 04:28
  #3 (permalink)  
Antiguo 10/06/2008, 05:10
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Temporizador en PHP

El script, sería simplemente comprobar si una determinada fecha o dato de mi BD cumple una condición que se ejecute, me imagino. Vamos un sript normal y corriente.

Respecto a lo de "cron", he estado leyendo que se puede hacer con tareas programadas, supongo que es el equivalente en linux.

Teniendo el script, sólo me quedaría hacer la tarea progrmada, ¿en un fichero?, y una vez lanzada la aplicación no tendría que tocar nada, ¿no?

Es que no se si el fichero .bat es la tarea programada o es otra cosa distinta.
Gracias por la respuesta.

Última edición por centrion_75; 10/06/2008 a las 05:16
  #4 (permalink)  
Antiguo 10/06/2008, 06:21
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Temporizador en PHP

creo que como dices funcionaria. Creas un .bat que ejecuta el script php. Luego añades una tarea programada para que cada X tiempo ejecute el fichero .bat.

Entonces por ejemplo cada 30min se ejecutaria el bat, que llamaria al script y el script realizaria la comprobacion y enviaria los email que sean necesarios.

Por lo tanto una vez realizado este proceso no tendrias nada mas que hacer, todo seria automatico.

Lo que no se es como se realizaria un .bat para lanzar un script PHP, si sabes hacerlo colocalo aqui.

probe de esta forma y creo que podria funcionar, aunque quizas haya mejores formas de hacerlo.
Cita:
cd C:\Program Files\Mozilla Firefox
firefox.exe http://www.yahoo.es
lo guardas como automatico.bat por ejemplo y le dices a las tareas programadas que lo ejecute. De esta forma abre el firefox con la direccion yahoo.es, que si la cambias por tu script PHP asunto resuelto.

Última edición por nx00; 10/06/2008 a las 06:33 Razón: creo que puede ser asi
  #5 (permalink)  
Antiguo 10/06/2008, 06:54
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Temporizador en PHP

el .bat es como un archivo .exe, donde tu puedes poner parametros a ejecutar o programas, poniendo su ruta y nombre.exe

La tarea programada estara en el panel de control de windows

Un saludo

PD: por favor, si te funciona de la manera que te explicaron, centrion_75, postealo para saberlo

Gracias

Última edición por jaronu; 10/06/2008 a las 08:08
  #6 (permalink)  
Antiguo 10/06/2008, 07:43
Avatar de Emirodgar  
Fecha de Ingreso: junio-2008
Mensajes: 1.255
Antigüedad: 15 años, 10 meses
Puntos: 121
Respuesta: Temporizador en PHP

El comando para ejecutar en fichero php es llamado al intérprete de php (php.exe) de la siguiente manera

php -r / -a C:\ruta\nombre_fichero.php

Hay diferencias según la versión de php que se use, para más info consultar

http://es2.php.net/features.commandline
  #7 (permalink)  
Antiguo 10/06/2008, 07:50
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Temporizador en PHP

Emirodgar,

solo se puede poner una ruta a un disco duro del pc o se puede ejecutar una pagina php, que esta en un servidor externo, algo asi:

php -r / -a http://www.pagina.com/nombre_fichero.php
  #8 (permalink)  
Antiguo 10/06/2008, 08:01
Avatar de Emirodgar  
Fecha de Ingreso: junio-2008
Mensajes: 1.255
Antigüedad: 15 años, 10 meses
Puntos: 121
Respuesta: Temporizador en PHP

jaronu, si te soy sincero nunca lo he utilizado de la forma http://.. así que desconozco si funcionaría o no.

De todas maneras si tuviera que ejecutar algo de esa forma y no funcionara con el intérprete de php aunque no fuera muy óptimo se podría tirar del navegador, firefox.exe http://ruta/pagina.php
  #9 (permalink)  
Antiguo 10/06/2008, 08:05
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Temporizador en PHP

Gracias a todos por responderme. Os voy a tener que pedir disculpas, porque todo esto no lo probaré hasta mañana, puesto que esta tarde voy a ver el partido de España-Rusia (por la tele, ya me gustaría estar ahí).

No os preocupeís, porque con los resultados que obtenga, los postearé.

Nuevamente gracias.
  #10 (permalink)  
Antiguo 10/06/2008, 08:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Temporizador en PHP

Para utilizarlo con una dirección (URL), debes de usar wget (hay una variante para Windows).

Saludos.
  #11 (permalink)  
Antiguo 12/06/2008, 03:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Temporizador en PHP

Bueno, lo primero de todo, disculpas por la tardanza. Pero es que ayer estuve aprendiendo a mandar correos.

He estado probando lo que me dijisteís, y tengo las siguiente dudas:

1-Tengo instalado el XAMPP en windows Vista y no sé cómo mirar qué versión de CLI, tengo. Sé que mi versión de PHP es 5.2.5

2-He creado el fichero.bat de la siguiente forma:

php -r C:\xampp\htdocs\Servicio~1\Reactivos\reactivo.php -a

He puesto Servicio~, porque al leer cómo crear un fichero .bat, dice que los nombres superiores a 8 caracteres, que se pongan así. Sería ServicioTutorias.

Pero no me hace nada.El script lo he probado antes y ejecutandolo funciona.

3-¿Si una vez creado el fichero .bat, lo ejecuto yo directamente, debería de hacer lo que tiene escrito? Lo digo, para probarlo antes de que lo haga la tarea programada y no tener que estar esperando y focalizar el problema.
  #12 (permalink)  
Antiguo 12/06/2008, 05:29
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Temporizador en PHP

Hola

yo tambien estuve haciendo pruebas, he hice ayer un .bat con las siguientes lineas y me ejecuta correctamente la pagina que le indico, me abre el IE con la pagina indicada

Cita:
@echo off
echo Iniciando internet expolrer con la pagina.php

"C:\program files\internet explorer\iexplore.exe" "http://www.tu-web.com/pagina.php"
a lo mejor puedes usarlo con localhost/pagina.php

Un saludo
  #13 (permalink)  
Antiguo 12/06/2008, 09:08
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Temporizador en PHP

Tienes razón utilizando el navegador sí que funciona, lo malo es que lo habre. Lo que he hecho es:

@echo off
echo Iniciando internet expolrer con la pagina.php

"C:\Program Files (x86)\Internet Explorer\iexplore.exe" "http://localhost/ServicioTutorias/Reactivos/reactivo.php"


Voy a seguir probando a ver si consigo hacerlo, pero con CLI. Puede que uno de los errores haya sido el no poner las comillas en las rutas o incluso no poner el nombre entero.

Si alguién sabe qué hago mal, si es tan amable de indicarmelo mejor.

Gracias de nuevo.
  #14 (permalink)  
Antiguo 12/06/2008, 09:28
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Respuesta: Temporizador en PHP

He probado a hacer en la consola MsDos, lo que hace mi fichero .bat y este es el resultado:
C:\xampp\php>php.exe -f "C:\xampp\htdocs\ServicioTutorias\Reactivos\reacti vo.php


Warning: require(../Negocio/Correo/class.phpmailer.php): failed to open stream:
No such file or directory in C:\xampp\htdocs\ServicioTutorias\Reactivos\reactiv o
.php on line 5

Fatal error: require(): Failed opening required '../Negocio/Correo/class.phpmail
er.php' (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\ServicioTutoria
s\Reactivos\reactivo.php on line 5


¿Cómo es posible que me dé un error, ejecutandolo así y no cuando lo ejecuta el navegador?
  #15 (permalink)  
Antiguo 12/06/2008, 09:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Temporizador en PHP

todo es posible... mientras haya errores de contexto....

si entiendes que hace falta un require ¿seguro lo puede hallar en la ruta asignada???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 12/06/2008, 09:38
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Temporizador en PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
todo es posible... mientras haya errores de contexto....

si entiendes que hace falta un require ¿seguro lo puede hallar en la ruta asignada???
Perdoname, pero no he entendido bién tu pregunta.¿ Te refieres a si esta bién puesta la ruta del scritp?
  #17 (permalink)  
Antiguo 12/06/2008, 09:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Temporizador en PHP

me refiero al error.... el script inicial hace la llamada hacia otro script... que por ende debería estar en la ubicación descrita por el error.... ¿existe esto en verdad???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 12/06/2008, 10:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Temporizador en PHP

Ya te entiendo. Por lo que estoy viendo el problema me lo estan dando las cabeceras. Este es el inicio de mi script:

Código PHP:
<?php
//Cada día este escritp se ejecutará

//Necesario para poder enviar correos
include('../Negocio/Correo/class.phpmailer.php');
include(
'../Negocio/gestorprofesores.php');
include(
'../Negocio/gestoradministradores.php');
//Fichero que contiene los datos de la conexión
include('../Negocio/configuracion.php');
include_once(
'../Negocio/gestorbd.php');
//DAR DE BAJA A UN PROFESOR CUYA FECHA FIN DE CONTRATO HA EXPIRADO
//1º Ver qué profesores finalizan contrato

//OPTIMIZACIÓN
//Abro la conexión sólo donde la necesito y no en cada método o clase
$conexion= new GestorBD($cfg);
$conexion->AbrirConexion();
La carpeta raiz de mi aplicación se llama ServicioTutorias

El script reactivo.php esta en ServicioTutorias/Reactivos/reactivo.php

El resto de objetos que llamo estan en ServicioTutorias/Negocio/nombredel fichero, tal y como se vé en mi script.

Negocio/configuracion.php', contiene los datos de conexión de la BD. Este es utilizado por /Negocio/gestorbd.php' y este esta a su vez en gestorprofesores.php' y gestoradministradores.php'.

NO sé si me he explicado bién.
  #19 (permalink)  
Antiguo 12/06/2008, 10:13
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Temporizador en PHP

Al seguir probando(ahora el script esta igual que como puse arriba)...claro me esta cogiendo métodos y objetos que no estan esa dirección(\Reactivos...). Los tendría que coger en ...\Negocio\... .

¿Cómo cambio eso?
  #20 (permalink)  
Antiguo 12/06/2008, 10:44
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Respuesta: Temporizador en PHP

¿No será que tengo que modificar algo del fichero php.ini?

Ahora esta así:

; Windows: "\path1;\path2"
include_path = ".;C:\xampp\php\pear\"
  #21 (permalink)  
Antiguo 12/06/2008, 11:56
Avatar de josefferhn  
Fecha de Ingreso: agosto-2007
Ubicación: Tegucigalpa, Fco Morazan
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Temporizador en PHP

Ke tal centrion_75, pues eh leido todo este post.. y pues aki los compañeros te ayudaron bastante..

pero yo eh hecho lo ke tu dices y no eh tenido ningun problema, para no hacerte largo la ayuda solo comprueba esto:

1. Ejecuta tu script normalmente desde el explorador de tu preferencia, ok, listo esto, sabemos que tu script funciona correctamente sin importar los includes.

2. crear el batch y le pones el nombre ke tu kieras y preferiblemente guardalo en el mismo sitio donde tienes tu scrip de PHP.

3. Dentro del batch a crear solo pones la siguiente linea:
PHP TuScript.php

-> Esta linea lo que le dice al MS ke lo ke compilara sera un archivo PHP, y pues entonces el lo ejcuta como si fuera una pagina normal.

4. creas la tarea y cuando ubicas el BATCH lo ubicas donde tienes el escript y batch almacenado.

Espero te ayude.. exitos !!
  #22 (permalink)  
Antiguo 12/06/2008, 12:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Temporizador en PHP

Si señor

Me quito el sombrero. Sólo bastaba con incluir el fichero .bat en el mismo directorio que el script. Nisiquiera he tenido que modificarlo.

Ya sé que va a ser abusar, pero...¿es normal que se abra la consola MsDos, se ejecute y se cierre, o se puede hacer de forma que se "ejecute en segundo plano"?

MUCHÍSIMAS GRACIAS.
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 07:57.