Page 1 sur 1

Executer une fonction après l'expiration d'une date en PHP

Posté : 01 juin 2016, 20:58
par abdes
Bonsoir tout le monde ;

J'ai un champ date de la commande dans la table client et je veux verifier si cette date est expirée le client doit recevoir automatiquement un Email .Mais je sais pas comment le faire en PHP, j'ai essayé la fonction strtotime mais aucun resultat.

pourriez-vous m'aider ?

Re: Executer une fonction après l'expiration d'une date en PHP

Posté : 02 juin 2016, 00:39
par Nizalify
Bonsoir (ou bonjour vu l'heure) !

Dans un premier temps, vous souhaitez que cette fonction soit appelée de manière autonome ? Ex : Le jour x, la fonction est appelée sans intervention humaine. Ou qu'elle le soit lorsque par exemple, l'utilisateur se connecte ou selon un autre événement ?

C'est un peu vague comme description, il y a plusieurs façons de comparer des dates... à quel moment exactement tu souhaiterais vérifier si la date est expirée ? Lorsque tu récupère les infos en base de données, avant, pendant un traitement, après ?

Sinon voici, avec php, comment je fais pour comparer des dates ensembles :
// Création des objets avec les dates correspondantes
$dateDebut = new DateTime("01-05-2015");
$dateActuelle = new DateTime(date("d-m-Y"));

if($dateDebut < $dateActuelle){
    echo "Date plus petite";
}
Cordialement

Re: Executer une fonction après l'expiration d'une date en PHP

Posté : 02 juin 2016, 09:06
par abdes
Merci bcp pour ta réponse :wink:

voila mon exemple :
Image


quand le client se connect je peux le envoyer un email car la fonction s'executer lors de la connexion du client au site
mais supposons que le client n'est pas connecter au site il va pas recevoir l'email malgré l'expiration de la date :( tu as bien compris maintenant ce que je veux

Re: Executer une fonction après l'expiration d'une date en PHP

Posté : 02 juin 2016, 09:45
par Naroth
Bonjour abdes,

Si j'ai bien compris, tu souhaiterais que le mail s'envoie de manière automatique, sans qu'un humain n'intervienne dans la boucle.
Donc pour cela tu aurais besoin d'un script/processus qui toutes les X minutes/heures vient vérifier qu'il faut lui envoyer un mail.

Pour cela tu as deux choix suivants le système d'exploitation qui exécute le code.

La crontab (linux et mac OS) : Celle-ci permet d’exécuter des commandes à rythme régulier (toutes les minutes/heures/jours)
Tu peux donc créer un script php qui vérifiera si le mail n'a pas déjà été envoyé et si il est l'heure de l'envoyer et le faire exécuter tous les X temps.

L'équivalent Windows semblerait être "Windows Task Scheduler", en revanche ne l'ayant jamais utilisé, je ne peux guère t'en dire plus à ce sujet.

Tu pourrais avoir l'idée aussi de laisser un script php tourner en permanence dans une boucle infinie.
Sache que c'est une très mauvaise idée.

Je t'invite donc à te documenter un peu sur ces deux méthodes.

Re: Executer une fonction après l'expiration d'une date en PHP

Posté : 27 juin 2016, 16:08
par Nizalify
Je rejoins Naroth,

J'ajouterais que si ton site est sur un serveur mutualisé, donc hébergé par un fournisseur, il est possible que tu n'ai pas accès à des fonctionnalités comme celles-ci (installer des services sur le serveur). La solution que personnellement j'utilise, part de l'idée qu'au moins une fois par jour, quelqu'un vient sur mon application. Au moment ou cette personne charge une page, il y a une fonction qui ne s’exécute qu'une fois pour vérifier, par exemple pour ton cas, que la date est expirée ou non (peut-importe qui vient sur le site, la fonction fait une recherche générale sur tous les utilisateurs, enfin après, selon les besoins..).

Une autre idée serait d'avoir un processus sur un de tes pc qui va automatiquement ouvrir une page de l'application qui lance ce processus.

Enfin, les solutions existent, en espérant avoir pu t'aiguiller