Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No se como preguntar esto

Estas en el tema de No se como preguntar esto en el foro de PHP en Foros del Web. Hola a todos, hace tiempo que no me muevo por estos lugares y me alegra mucho estar por aqui de nuevo, en esta ocasion tengo ...
  #1 (permalink)  
Antiguo 10/10/2013, 05:45
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 16 años, 11 meses
Puntos: 0
No se como preguntar esto

Hola a todos, hace tiempo que no me muevo por estos lugares y me alegra mucho estar por aqui de nuevo, en esta ocasion tengo una pregunta que no se ni como buscar.

¿Como puedo hacer que un script se ejecute a una hora en particular?

Por ejemplo, quiero que se cree un archivo de texto el dia X a la hora X, esto serviria para hacer por ejemplo una agenda ya que se podria crear un txt o ingresar datos en una base de datos o cualquier cosa que se pueda hacer con php como se puede deducir.

Todo esto seria ademas sin que nadie abra ninguna pagina ya que con condicionales y abriendo una pagina periodicamente, esto tendria facill solución, pero no es el caso.

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 10/10/2013, 05:55
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: No se como preguntar esto

Solo digo CRON
  #3 (permalink)  
Antiguo 10/10/2013, 05:58
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: No se como preguntar esto

Tienes que utilizar cronjobs.

Suponiendo que tu servidor te de soporte para cronjobs y sea un servidor en linux, lo que tienes que hacer es abrir la terminal y escribir

crontab -e

Eso te va a abrir el editor vim y vas a poder escribir cronjobs a tu antojo.

Los cron jobs siguen el siguiente formato:

* * * * * comando a ejecutar
- - - - -
| | | | |
| | | | +----- dia de la semana (0 - 6) (Domingo=0)
| | | +------- mes (1 - 12)
| | +--------- dia del mes(1 - 31)
| +----------- hora (0 - 23)
+------------- minuto (0 - 59)

por ejemplo:

30 12 * * 1 /usr/bin/php /usr/share/www/tusitio/cronjob/comando.php >> /usr/share/www/tusitio/logs/cronlog.log

Significa que todos los lunes a las 12:30 PM se va a ejecutar tu cron job y cualquier output que tenga va a ser escrito al archivo cronlog.log

Es importante que utilices direcciones absolutas, la mayoria de las veces las direccoines relativas no funcionan.

Algunas versiones de cron te permiten hacer esto:

*/30 * * * * /usr/bin/php /usr/share/www/tusitio/cronjob/comando.php >> /usr/share/www/tusitio/logs/cronlog.log

Eso quiere decir que tu script se va a ejecutar cada 30 minutos, pero usalo con cuidado porque no todas las versiones de cron soportan ese formato.
  #4 (permalink)  
Antiguo 10/10/2013, 07:21
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No se como preguntar esto

Sorprendido por la velocidd y la calidad, Muchas gracias.

Pero esto no seria php ¿no? es mas bien ¿apache? o ¿es php?

Y ya por completar la información si cabe ¿existen otras formas?
  #5 (permalink)  
Antiguo 10/10/2013, 07:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: No se como preguntar esto

Cita:
Iniciado por chechu_ Ver Mensaje
Sorprendido por la velocidd y la calidad, Muchas gracias.

Pero esto no seria php ¿no? es mas bien ¿apache? o ¿es php?

Y ya por completar la información si cabe ¿existen otras formas?
no, los cronjobs son parte del OS, sólo se encargan de ejecutar el comando que le indiques, el cual puede estar en cualquier lenguaje soportado por el OS

con respecto a las otras formas, sería básicamente registrar demonios o servicios (como se llame según el OS), que son programas que se ejecutan en segundo plano y sin pararse (hasta que son detenidos), la idea es que crees un demonio en linux que chequee constantemente la hora y ejecute tu comando, pero como ya habrás deducido: ése demonio ya existe y se llama el cron (crontab), aunque existen otros como xinetd, y si ya está ¿para que reinventar la rueda ?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 10/10/2013 a las 07:37
  #6 (permalink)  
Antiguo 10/10/2013, 07:35
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: No se como preguntar esto

No es apache, ni php. Es Cron :)
Cron es un programa de linux que corre "invisiblemente" al usuario y ejecuta comandos de linux cada cierto tiempo, segun tu se lo indiques en el archivo crontab.

Para editar crontab, necesitas tener acceso a la terminar de linux, y escribir

crontab -e

Eso te va a abrir vim y te va a permitir hacer todo lo que escribir anteriormente.
  #7 (permalink)  
Antiguo 10/10/2013, 09:05
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No se como preguntar esto

Muchas gracias de nuevo, entonces ¿en apache como seria? o ¿no es necsario por que apache corre en linux? pregunto esto por que imagino que pocos servidores podran dar un servicio como este.
  #8 (permalink)  
Antiguo 10/10/2013, 09:14
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: No se como preguntar esto

Apache es un servidor web, no un agendador de tareas.

Podrias utilizar el servicio Scheduler de Apache Turbine como alternativa a cron, pero realmente... es mucho mas sencillo simplemente usar cron.

Cron es independiente de apache, corre por encima de apache es parte del sistema operativo.

La alternativa es que escribas un script php y lo corras como un daeomn:

Código BASH:
Ver original
  1. nohup php miScript.php &
  #9 (permalink)  
Antiguo 10/10/2013, 11:29
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No se como preguntar esto

No creo que los cronjobs sea algo que permitan usar los servidores convencionales de contrato de linux ni los hosting ¿verdad?
  #10 (permalink)  
Antiguo 10/10/2013, 11:29
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: No se como preguntar esto

si te refieres al hosting, ellos deben de ofrecerte una forma de configurar cronjobs a travez del cpanel o backend que dispongan, a no ser que no lo soporten o sea un servicio adicional, en tal caso con quien debes consultar es con ellos

respondiendo a @chechu_: no necesariamente, hay hostings que si lo ofrecen, usualmente de pago
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #11 (permalink)  
Antiguo 11/10/2013, 00:11
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No se como preguntar esto

Muchas gracias a todos, me doy por respondido.

Etiquetas: Ninguno
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 20:27.