Foros del Web » Programando para Internet » PHP »

Realizar una funccion despues de X meses

Estas en el tema de Realizar una funccion despues de X meses en el foro de PHP en Foros del Web. Buenas, ya llevo buscando un buen rato y sin exito. Necesito crear una funccion que funccione mas o menos asi Código PHP: // si fecha en el fichero indicado seguir con la funccion y si no crearlo y poner la fecha de hoy (no hay problema) // leer el fichero que contiene la fecha y ver si han pasado x meses/semanas desde la ultima comprobacion => como compruebo si ha pasado tanto tiempo desde la ultima vez  Necesito ...
  #1 (permalink)  
Antiguo 08/07/2011, 17:38
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Realizar una funccion despues de X meses

Buenas, ya llevo buscando un buen rato y sin exito.

Necesito crear una funccion que funccione mas o menos asi

Código PHP:

// si fecha en el fichero indicado seguir con la funccion y si no crearlo y poner la fecha de hoy (no hay problema)

// leer el fichero que contiene la fecha y ver si han pasado x meses/semanas desde la ultima comprobacion => como compruebo si ha pasado tanto tiempo desde la ultima vez 
Necesito eso porque tengo una funccion que me renombra los ficheros que tienen caracteres especiales y espacios a nombres limpios y no quiero que lo haga cada vez que carque la web alguien, si no que cada determinado tiempo. O si teneis una mejor ideea, escucho vuestras opiniones

Gracias,
alex
  #2 (permalink)  
Antiguo 08/07/2011, 17:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Realizar una funccion despues de X meses

Usa un cronjob para ejecutar el código cada cierto tiempo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/07/2011, 18:04
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Podés ver la última fecha de modificacion del archivo con filemtime o guardar en algun lugar la fecha de la ultima comprobación (en algun fichero o en una base de datos).

Saludos!
  #4 (permalink)  
Antiguo 08/07/2011, 18:10
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Gracias abimaelrc por tu respuesta, pero he descartado esa opcion.

Claro que lo podria hacer, pero no me conviene ya que esa funcion ira en conjunto con otras de mi applicacion.

Sea lo que sea, lo tengo que hacer desde dentro de php. Siento haber olvidado decirlo en mi primer post.
  #5 (permalink)  
Antiguo 08/07/2011, 18:10
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Cita:
Iniciado por FFabre Ver Mensaje
Podés ver la última fecha de modificacion del archivo con filemtime o guardar en algun lugar la fecha de la ultima comprobación (en algun fichero o en una base de datos).

Saludos!
De ver la fecha no es el problema, el problema es de como comparar si ha pasado tanto tiempo...
  #6 (permalink)  
Antiguo 08/07/2011, 18:30
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Aver, las funciones de tiempo de PHP (las mas habituales) te tiran la fecha en segundos, asique si queres saber si paso por ejemplo un dia haces

$pasoundia = $ultimotiempo + (24*60*60) > $tiempoactual ? si, no;

Espero haber sido didáctico =P

24*60*60 es veinticuatro hs por 60 mins por 60 segs.

Saludos!
  #7 (permalink)  
Antiguo 08/07/2011, 18:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Realizar una funccion despues de X meses

Con PHP no puedes ejecutar cada cierto tiempo. Con cronjob se ejecuta el código de PHP que quieras.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 08/07/2011, 19:07
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Cita:
Iniciado por abimaelrc Ver Mensaje
Con PHP no puedes ejecutar cada cierto tiempo. Con cronjob se ejecuta el código de PHP que quieras.
Si se puede con PHP, sólo que no es 100% seguro que se ejecute cada x tiempo. Pero si podés hacer que se ejecute algo si paso un tiempo mayor o igual a X desde algún evento.

Saludos!
  #9 (permalink)  
Antiguo 08/07/2011, 19:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Realizar una funccion despues de X meses

El problema que lo que tu quieres que lo haga automático. Por lo que tendrías que hacer que cada vez que una persona visite la página ejecute un código antes (que no es lo ideal, sino ejecutarlo cada cierto tiempo con cron y que sea una vez y no cada vez que un usuario visite la página).
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 08/07/2011, 19:25
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Si, pero es la única forma de hacerlo con PHP y sin Cron, y arriba aclaró que descarta la idea de usar crons.

Saludos!
  #11 (permalink)  
Antiguo 10/07/2011, 15:40
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Cita:
Iniciado por FFabre Ver Mensaje
Aver, las funciones de tiempo de PHP (las mas habituales) te tiran la fecha en segundos, asique si queres saber si paso por ejemplo un dia haces

$pasoundia = $ultimotiempo + (24*60*60) > $tiempoactual ? si, no;

Espero haber sido didáctico =P

24*60*60 es veinticuatro hs por 60 mins por 60 segs.

Saludos!
Gracias por vuestra ayuda.

No logro entender esto:

Código PHP:
$pasadoundia $ultimafecha + (24*60*60) > $fechahoy... 
Porque asi? no lo entiendo para nada

Yo lo veia asi
Código PHP:
if ($ultimafecha {MENOR CON X TIEMPO$fechahoy){
//haz esto

  #12 (permalink)  
Antiguo 10/07/2011, 21:09
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: Realizar una funccion despues de X meses

buenas...

a mi se me ocurre que haga algun tipo de bandera basado en la fecha en una base de datos por ejemplo:

crear una base que tenga timpolimite, tiempotranscurrido, condicionparaejecutar

y comparar por cada usuario si la sencia ya se ejecuto la ignora, si no se ejecuta y se guarda en la base la bandera de ya haberse ejecutado

asi aunque con cada usuario se compruebe, la secuencia no se ejecuta cada vez

bueno... esa seria mi idea en bruto, habria que pasarla a codigo php

saludos!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #13 (permalink)  
Antiguo 10/07/2011, 22:02
Avatar de ZoroRoronoa  
Fecha de Ingreso: marzo-2011
Ubicación: California, USA
Mensajes: 824
Antigüedad: 13 años
Puntos: 116
Respuesta: Realizar una funccion despues de X meses

y si una vez pasado X tiempo, 5 usuarios entran ??
Se ejecutara 5 veces el evento o que...

Con PHP no se puede lograr, seria cuestion de que el usuario visitante durara X tiempo conectado para que se cumpla la funcion, pero no es asi...

Yo concuerdo con abimaelrc usa cronj.
__________________
Programador jQuery & PHP
  #14 (permalink)  
Antiguo 12/07/2011, 12:15
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Si se puede en PHP con la ayuda de http://www.php.net/manual/es/datetime.diff.php
  #15 (permalink)  
Antiguo 12/07/2011, 12:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Realizar una funccion despues de X meses

El problema no es que se pueda hacer algo php, porque desde el principio indicaste que quieres ejecutar un proceso de php pero que sea cada cierto tiempo y que mo sea cargado cada vez que visite alguien, por lo que la respuesta siempre ha sido usando cronjob. Pero si lo lograste sin usar cronjob
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 12/07/2011 a las 13:16 Razón: corregir error ortográfico...
  #16 (permalink)  
Antiguo 12/07/2011, 12:37
Avatar de rmilano  
Fecha de Ingreso: abril-2002
Ubicación: Mexico DF
Mensajes: 150
Antigüedad: 22 años
Puntos: 0
Respuesta: Realizar una funccion despues de X meses

Yo pensaría mas bien en ejecutar el procedimiento y controlarlo por el momento en que se ejecuto, y no controlarlo por el usuario que entra.

Es decir, alguien entra y la función no se había ejecutado en un dia (por ejemplo), que se ejecute, y se guarde el registro de que se acaba de ejecutar, a los 5 minutos entra alguien, y pregunta se ejecuto hace un día, como la respuesta es no, no hace nada... al día siguiente cuando entre alguien, la respuesta es si, se ejecuta y se actualiza.

La actualización no necesariamente debe ser en una base de datos, podría ser en un simple archivo de texto.

El tema de comparación de fechas es algo trillado, revisa otros post en este foro, o la ayuda de php.net.

Saludos,
__________________
Rodolfo Milano Oliveros
www.todohosting.com.mx
Especialista Sistemas de Información
  #17 (permalink)  
Antiguo 12/07/2011, 12:38
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Explico la teoria que voy a aplicar ahora mismo en mi aplicacion...

Ahora, cuando se ejecutara por primera vez la funccion (jeje, decir eso me recordo a SkyNet de Terminator :) ), al finalizar la funccion guardara en un fichero la fecha de hoy.

Hay otra funccion que lo que hace es comprobar si han pasado X dias de la ultima fecha escrita en el fichero, y luego ya sabeis el resto.

Es verdad que la funccion que comprueba si ha pasado el tiempo se ejecutara siempre que carge la pagina pero eso no tardara casi nada.


Cuando acabe con mis prioridades, probare con el cronjob.
  #18 (permalink)  
Antiguo 12/07/2011, 12:54
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: Realizar una funccion despues de X meses

Buenas!!

ZoroRoronoa:
no pasaria eso que mencionas porque para eso montas tu "bandera" que pone el script al cumplirse la condicion...

en el entendimiento que si ya corri el script por ejemplo ahora mismo y 3mins despues se registra alguien es logico que esa persona queda para la siguiente revision en x tiempo que se determine
ahora que si lo quieres hacer personalizado por cada usuario pues igual es "simple" porque le creas un campo que controle si ya se ejecuto o no, ya sea tomando en cuenta los meses o con el metodo de "banderas" que comente originalmente
es cuestion de logistica y SI se puede hacer en PHP y como ya dijeron no se requiere base de datos si es global, si lo quieres personalizado si se requiere....

Saludos!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #19 (permalink)  
Antiguo 12/07/2011, 13:05
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Cita:
Iniciado por w0rldart Ver Mensaje
Código PHP:
$pasadoundia $ultimafecha + (24*60*60) > $fechahoy... 
Porque asi? no lo entiendo para nada
Fácil, si la ultima fecha mas un dia es mayor a la fecha de hoy, hago tal cosa, si no otra cosa.

Saludos!
  #20 (permalink)  
Antiguo 12/07/2011, 14:27
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Ai ai ai, no se que se me habra pasado por la cabeza... he conseguido la funccion que funccione sin ningun problema pero ahora realizo que no es realmente util para mi.

Yo la necesitap para que despues de X dias vuelva a leer todos los ficheros de unas carpetas y ver si los nombres de los ficheros cumplen con el pattern establecido. Pero ahora me doy cuenta que no es util porque si se anade un fichero nuevo se tendra que esperar X dias hasta que vuelva a comprobar eso.

Estoy en un moment que tengo la mente en blanco, me podeis sugerir algo para lo que yo quiero hacer porfavor.

Gracias,
Alex
  #21 (permalink)  
Antiguo 12/07/2011, 15:30
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Podés hacer que cuando se agregue un nuevo archivo haga la comprobación. En realidad me gustaría saber más sobre cual es tu problema porque así en el aire no te puedo recomendar nada.
Saludos!
  #22 (permalink)  
Antiguo 12/07/2011, 17:20
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Explico:

Tengo estas carpetas

Media
------/Gallery
---------------/rally
---------------------/1.jpg
---------------------/2.png
...

Ahora, en la aplicacion (es una framework que he hecho para poner las webs que tengo) hay 2 clases que las combino.

Clase 1, la utilizo para un search, find and markup de las fotos que encuentra. Esta clase tambien tiene definida varios booleans que los uso como activadores de otras funciones, entre la cual se encuentra el activador de comprobar si los nombre de los ficheros de las fotos coresponden con lo establecido (sin espacios, carracteres raros, etc...).

Clase 2, tiene la funccion de filtrar los nombres de ficheros y si es necesarios renombrarlos.

El problema ahora es que no necesito que compruebe siempre que carga la pagina si los nombres de los ficheros estan bien o no. Ahora bien, me puedes decir que simplemente que desactive la opcion de comprobar los nombres de los ficheros pero no esa es la idea.
La idea es de que esa opcion este asi por ahora, hasta que yo avanze y hare que todo eso se gestione desde un panel de administrador, pero hasta entonces me estoy dando vueltas con posibles opciones que todas me llevan al mismo fin... volver a comprobar todos los ficheros otra vez.

Y ahora es cuando yo pregunto, vosotros que hariais?
  #23 (permalink)  
Antiguo 12/07/2011, 17:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Una pregunta, como se suben las imágenes al servidor? directamente por FTP ? o como?
  #24 (permalink)  
Antiguo 12/07/2011, 18:12
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Sip, por ftp... cuenta de usuario y se sube a la carpeta indicada. Por?
  #25 (permalink)  
Antiguo 12/07/2011, 18:25
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Para saber si los subias mediante un script PHP era mas facil hacer la comprobación una sola vez cuando subia el archivo

Estem... no se, en este momento no se me ocurre nada

Si se me ocurre algo edito el post
  #26 (permalink)  
Antiguo 12/07/2011, 19:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Realizar una funccion despues de X meses

Creo que vas a pensar que soy latoso pero lo mejor es usar un cronjob que ejecute un código cada hora por ejemplo y verifique la información de los directorios.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #27 (permalink)  
Antiguo 12/07/2011, 20:07
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Si, igual eso no es lo que quiere... Quiere que se verifique una ves por mes. Lo que no entiendo es exactamente para que =P, digo si lo verificas una ves, ese archivo ya queda bien, no habria que verificarlo todos los meses.
  #28 (permalink)  
Antiguo 13/07/2011, 02:15
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

Cita:
Iniciado por abimaelrc Ver Mensaje
Creo que vas a pensar que soy latoso pero lo mejor es usar un cronjob que ejecute un código cada hora por ejemplo y verifique la información de los directorios.
Este este momento, creo que es una buena idea el cronjob.


@FFabre
Ya, pero recuerda que mas arriba descarte esta vez esa opcion porque si yo anado un fichero nuevo ahora y se necesita ver, tardara X tiempo hasta que se vea.


Pero ya me he decidido, voy a aplazar este tema porque cuando acabo el gestor los ficheros se subiran a travez de ello, y entonces hara la comprobacion para cada nuevo fichero.


Gracias a todos por vuestra ayudaa
  #29 (permalink)  
Antiguo 13/07/2011, 06:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Realizar una funccion despues de X meses

Cita:
Iniciado por w0rldart Ver Mensaje
@FFabre
Ya, pero recuerda que mas arriba descarte esta vez esa opcion porque si yo anado un fichero nuevo ahora y se necesita ver, tardara X tiempo hasta que se vea.
Si, pero con cronjobs también =D

Saludos!
  #30 (permalink)  
Antiguo 13/07/2011, 12:53
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Realizar una funccion despues de X meses

@FFabre

cierto, muy cierto pero ligerara la carga de la web :)

Etiquetas: meses, realizar
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 08:33.