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

Eléphanteau du PHP | 20 Messages

01 juin 2016, 20:58

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 ?

Petit nouveau ! | 5 Messages

02 juin 2016, 00:39

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
La croyance est la matière que l’on amasse pour combler l’incertitude

Eléphanteau du PHP | 20 Messages

02 juin 2016, 09:06

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

Eléphant du PHP | 176 Messages

02 juin 2016, 09:45

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.
Cordialement
Naroth

Petit nouveau ! | 5 Messages

27 juin 2016, 16:08

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


Sujet remonté par abdes le 27 juin 2016, 16:08.
La croyance est la matière que l’on amasse pour combler l’incertitude