Foros del Web » Programando para Internet » PHP »

Recargar php con un Cron

Estas en el tema de Recargar php con un Cron en el foro de PHP en Foros del Web. Bueno, en principios es simplemente eso. Tengo un archivo de newsletters, el cual es llamado mediante un cron. Ahora surge la necesidad de que este ...
  #1 (permalink)  
Antiguo 27/07/2005, 16:40
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Recargar php con un Cron

Bueno, en principios es simplemente eso.
Tengo un archivo de newsletters, el cual es llamado mediante un cron.
Ahora surge la necesidad de que este proceso se pagine. El tema es que, segun la pruebas que he hecho, no funcionan cosas como GET, header("location:xxx, y demás, aunque si me ha funcionado el uso de sessiones (asombrado, pense que guardaba una referencia del browser), asi que el tema del GET lo tendría solucionado.

Ahora, he buscado como rellamar al cron con un exec o system, lo cual me serviria en princios (creo), pero sin suerte, y se me han ocurrido cosas como hacer un include del mismo file (pero no me serviria, aunque funciona "ojo con los loops infinitos ").

A quien se le ocurra algo, o ya ha pasado esto, o sepa como solucionarlo, se le agradecera con alabaciones eternas su ayuda!
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #2 (permalink)  
Antiguo 27/07/2005, 16:56
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 14 años, 6 meses
Puntos: 0
probaste de usar el php como un script del sistema, es decir invocando como uno de bash???. no se bien que es lo que necesitas hacer pero si haces un script que empiece con #! /usr/bin/php
(o donde este el binario, podes dispararlo como cualquier otra cosa del sistema.
  #3 (permalink)  
Antiguo 27/07/2005, 18:04
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
El problema no es dispararlo, eso lo logro desde el cpanel. El tema es, una vez que se llame, rellamarlo.

O sea, si lo llamo desde el browser, lo que hago en el proceso, siempre y cuando tenga que paginar, y debajo del proceso, algo como :
header("Location: " . $_SERVER["PHP_SELF"] );
Pero esto, seguramente afecte al browser directamente (logicamente deberia ser asi).... y no me doy cuenta otra forma de hacerlo sin que involucre al browser.

La idea entoces, es, llegado este punto, disparar nuevamente el cron, lo cual no se como es el comando dentro del exec, o del system. O tambien alguna otra manera de la cual no me haya dado cuenta.
__________________
Mi punto de partida es Que Bueno Lo Nuevo

Última edición por nicolaspar; 28/07/2005 a las 07:55
  #4 (permalink)  
Antiguo 28/07/2005, 08:33
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Si a alguién se le ocurre algo, yo sigo con el mismo problema....:(
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 28/07/2005, 09:55
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
quieres que el script se llame a si mismo y se recargue en el navegador?

si es esto lo que quieres basta con usar javascript y poner un timer, consulta el foro de javascript o en google y lo encontraras en seguida.
  #6 (permalink)  
Antiguo 28/07/2005, 09:57
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Si, llamandolo de un Browser no tengo problema, hago un window.location, o desde php un header("location:...pero necesito llamarlo mediante un cron!, y esto no funciona en el mismo.

Igual muchas gracias por intentar! y se siguen aceptando suguerencias.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 28/07/2005, 12:33
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 13 años, 9 meses
Puntos: 0
antes de nada....... sabes algo del demonio cron y donde se guardan las cosas?
  #8 (permalink)  
Antiguo 28/07/2005, 12:47
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
No, realmente no mucho. Lo estoy manejando (siquiera lo estoy haceindo yo mismo, sino el cliente), desde el cpanel, que tiene para dar de alta esto.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 28/07/2005, 14:20
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 14 años, 6 meses
Puntos: 0
no entiendo!!!, no lo tomes a mal, pero le doy vueltas a tu post y no entiendo que quieres hacer.
el demonio cron es un programador de tareas, el cual funciona independientemente del resto de las cosas, y se maneja "detras" de todo es decir a nivel sistema operativo. Lo programas en para que realice algo en algun momento determinado pero no podes dispararlo cuando a vos se te de la gana. en todo caso, debarias probar con el comando "at" que es para disparar algo en un momento x(equis) o por llamarlo mejor ejecutar algo con retardo.
me explico???
es decir si queres hacer esto, nada tiene que ver con el cron y muchisimo menos podes hacerlo desde el cpanel. pasate por el foro de linux si quieres ver opciones del at.
saludos
  #10 (permalink)  
Antiguo 28/07/2005, 14:37
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Para nada...como lo tomaria a mal!...A ver, tratare de nuevo...te cuento, o les cuento, lo que tengo que lograr...tal vez lo este encarando de manera incorrecta.

El cliente necesita un proceso que envie, todas las noches (cuando mas livianito esta el servidor), unos newsletters de novedades.

El proceso (dado de alta desde el cpanel), funciona bien, el tema es que el numero de newsletters ha crecido, por lo que el necesita que esto se pagine O sea, que no enviar de una 10000 emails, sino hacerlo en paquetes, de digamos 100 emails.

Si lo hago en por medio de un browser, no tengo problema, ya que voy paginando con un refresh, y en cada recarga envia estos paquetes hasta llegar al numero total.

Ahora bien, desde el cron, esto no puedo hacerlo (el recargar el file, con por ejemplo header("Location mifile.php");), y necesito hacerlo, ya que no me voy a levantar todas las noches a las 2 de la mañana a hacer esto (es una manera de decirlo). Es por esto que pregunto como rellamarlo, aunque cada vez le veo menos logica a eso....

Tal vez este encarando mal las cosas, ya que nunca hice esto de "paginar" un proceso de este tipo y no se me ocurre como hacerlo.

Cualquier duda, estare por aca...
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #11 (permalink)  
Antiguo 28/07/2005, 15:31
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 14 años, 6 meses
Puntos: 0
ahora, sip. pero porque no haces un ciclo con una cantidad dinamica dependiendo de los datos que te traes de la base???? y haces la cantidad de llamadas a la funcion mail que crean necesaria??. No hay problema de la cantidad que veces que llames a esta funcion.
otra opcion es poner como te comente antes un exec con el comando at de linux para disparar nuevamente el script dentro de 1 o 2 minutos, sino necesitas volverlo a llamar no generas dicha llamada. pero esto particularmente no es lo mejor. pero seria otra opcion.
  #12 (permalink)  
Antiguo 28/07/2005, 15:39
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 13 años, 9 meses
Puntos: 0
dale un vistazo a esto
http://aldealinux.com/cms/forum_viewtopic.php?12.66

quizas varie un poco segun la distribucion de linux

para ejecutar un php creo que hay que poner php -e fichero.php
pero no te lo puedo asegurar, creo que en la ayuda del comando php deberia venir
  #13 (permalink)  
Antiguo 28/07/2005, 16:23
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Cita:
Iniciado por chr_c
ahora, sip. pero porque no haces un ciclo con una cantidad dinamica dependiendo de los datos que te traes de la base???? y haces la cantidad de llamadas a la funcion mail que crean necesaria??. No hay problema de la cantidad que veces que llames a esta funcion.
otra opcion es poner como te comente antes un exec con el comando at de linux para disparar nuevamente el script dentro de 1 o 2 minutos, sino necesitas volverlo a llamar no generas dicha llamada. pero esto particularmente no es lo mejor. pero seria otra opcion.
Es lo que intento lograr, pero no llamar de una a la funcion mail.
Lo del comando at es justamente lo que logro hacer (el proceso logico...si es con otra funcion o comando da igual)...si lo has usado, o sabes de algun lugar donde hagan referencia de como usarlo desde php, te estare agradecido.

De todas maneras buscare info sobre esto, y expondre la solucion si la encuentro.

Muchas gracias por tu tiempo, y si tenes algun aporte mas, por minimo que sea, se agradece.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #14 (permalink)  
Antiguo 29/07/2005, 11:10
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Se ha replicado esto, por si a alguein el interesa, en el foro de Dominios y Hosting, en base a la consulta de otro usuario:
http://www.forosdelweb.com/f19/sobre-cron-jobs-cpanel-320770/#post1197559

Si alguien desea aportar algo, sera bienvenido!
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #15 (permalink)  
Antiguo 29/07/2005, 16:30
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 13 años, 9 meses
Puntos: 0
has visto lo que te he puesto yo?
desde la consola de linux no es tan dificil
  #16 (permalink)  
Antiguo 29/07/2005, 16:40
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Lo del at si, le he dado un vistaso, pero dudo que tenga el privilegio necesario para ejecutar dicho comando desde php, aunque no lo he probado desde aún.
Lo de la consola no, ya que no tengo acceso siquiera al cpanel. Es un compartido, el cual maneja el cliente...y yo no poseo linux, asi que las pruebas deben ser medias exactas...ando con muchas cosas, y estoy meditando el como lo hago, ya que las posibles soluciones que he encontrado me complican la existencia.

Todo es medio complicado....:(
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #17 (permalink)  
Antiguo 29/07/2005, 17:59
 
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 13 años, 7 meses
Puntos: 1
No entiendo mucho tu planteo.
Yo tengo el mismo desarrollo hecho. Una aplicación que envia mails y mi base de datos tiene 17.000 registros por lo cual tuve que paginas los envios y las consultas por que sino explotaba todo, pero para esto me cree un archivo intermedio donde envio el query y algunos datos y luego vuelvo a mi página de envios de mails.
Este ir y venir lo hago simplemente con un:
echo "<script>parent.location='pagina.php'</script>";
Funciona todo. En realidad se complica un poco por el funcionamiento de las consultas, pero lo que vos decis debería funcionar con esto simplemente.
De todas maneras reitero, no entiendo mucho tu planteo, sería bueno que expliques un poco más detenidamente el proceso de tu aplicación para poder analisar mejor el problema.
__________________
:serio: :adios:
  #18 (permalink)  
Antiguo 29/07/2005, 18:25
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Pero hemiliano, esto lo llamas en tu caso abriendo, por ejemplo Internet Explorer y escribiendo el nombre el file!!!....yo necesito llamarlo mediante un cron...si fuera como decis, ya lo tengo hecho....

Si tenes algun dato a esto, sera bienvenido.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #19 (permalink)  
Antiguo 29/07/2005, 19:04
 
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 13 años, 7 meses
Puntos: 1
Mi aplicación también se ejecuta desde un cron y se ejecuta perfectamente.
Es por eso mi duda con respecto a tu planteo.
__________________
:serio: :adios:
  #20 (permalink)  
Antiguo 29/07/2005, 19:12
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Y usas js para recargarla?.....Guau!!!

Asi que me dices que usas un:
echo "<script>window.location = 'tuPagina.php';</script>";
Y con esto te funciona.....

Me podrás decir como creas el cron, desde donde y que parametro le pasas....tal vez este ahi mi problema....

Agradesco tu ayuda.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #21 (permalink)  
Antiguo 30/07/2005, 15:37
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Bueno, despues de renegar un rato, si al cron se le pasa como parametro get (WGET), se le especifica que tome comportamientos del browser (Realmento no lo entendi mucho, pero la cosa que funciona):
En si, desde el cpanel, en el text del comando, hay que poner:

get -nv -O /dev/null http://www.misitio.com/miArchivoPhpRecragable.php

Y con eso funciono a la perfeccion!.


Muchas gracias a todos.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #22 (permalink)  
Antiguo 30/07/2005, 16:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 102
Antigüedad: 12 años, 9 meses
Puntos: 0
La solución más sencilla para archivos php es colocar antes de la patch url, "php -q" en el cronjob.
Digo la path url porque debe ser tipo /home/pep/public_html.....

Un ejmplo seria "php -q /home/pep/public_html/mipagina.php"

Un saludo
  #23 (permalink)  
Antiguo 17/12/2011, 08:17
Avatar de degochan  
Fecha de Ingreso: marzo-2008
Mensajes: 27
Antigüedad: 9 años, 8 meses
Puntos: 1
Respuesta: Recargar php con un Cron

6 Años después y vuelve a servir a otro mas..

Que grande este foro..

get -nv -O /dev/null http://www.misitio.com/miArchivoPhpRecragable.php
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 22:11.