Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Planification sous PHP !?

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Mar Déc 20, 2005 10:10    Sujet du message: Planification sous PHP !?

Bonjour,

Je souhaiterai pouvoir planifier des tâches sous PHP, mais je n'ai aucune idée de la faisabilité de la chose.
Etant donné que PHP est interprété uniquement lorsqu'une requête est effectué, j'ai un doute...

Est-il possible par exemple, d'envoyer une newsletter à une période donnée ?
 
thierry8 Visiter le site web du posteur
Bourriquet
WRInaute passionné
WRInaute passionné

Inscrit le: 19 Sep 2005
Messages: 632

URL permanente de ce messagePosté le : Mar Déc 20, 2005 10:19    Sujet du message: Planification sous PHP !?

Le php est disponible aussi en ligne de commande.

Il y a même une extension dévelopée pour ( CLI : command ligne interface).

Cependant le module CGI convient tout à fait : tu as juste à faire précéder ton code php d'une ligne, qui contient le chemin vers l'interprêteur php

En général sous linux , ça se traduite par mettre :

#!/usr/local/lib/php

Comme c'est le module CGI, il va envoyer des entêtes HTTP que tu peux désactiver avec l'option -q

Ce qui donne :

#!/usr/local/lib/php -q

< ? php

ton code

? >

Après il te suffit de programmer ton script en tâche planifée (sous linux tâche CRON)
 
Bourriquet Visiter le site web du posteur
ecocentric
WRInaute accro
WRInaute accro

Inscrit le: 10 Fév 2004
Messages: 3262
Localisation: Mons

URL permanente de ce messagePosté le : Mar Déc 20, 2005 10:25    Sujet du message: Planification sous PHP !?

Sinon, tu peux créer un script externe en Perl ou en Python, qui apelle le script PHP à intervalle régulier.

Il y a aussi Webcron et cie, que l'on rappelle souvent sur WRI.
 
ecocentric Visiter le site web du posteur
Fab le Fou
WRInaute accro
WRInaute accro

Inscrit le: 02 Déc 2004
Messages: 1484
Localisation: Lorient

URL permanente de ce messagePosté le : Mar Déc 20, 2005 12:37    Sujet du message: Planification sous PHP !?

C'est marrant, je viens de plancher sur le problème pour mon script de petites annonces, dont la cache et la bd doivent être nettoyés régulièrement pour supprimer les annonces périmées...

Ma solution, qui a la mérite de fonctionner sur un mutu, consiste à commencer par créer manuellement un fichier que j'appelle par exemple "next_mod.php".

Ce fichier contiendra la première date de lancement de ta procédure (dans ton cas, l'envoi de ta newsletter).

Quand je parle de date, je parle en fait du timestamp, qui est le nombre de seconde depuis le 1er janvier 1970, donc un nombre entier plus facile à manipuler qu'une date et que tu obtiens en lancant la fonction time().

Ensuite, tu insère un bout de code, par exemple sur ta page d'acceuil qui peut ressembler à ça :

Code:
<?
//--le fichier contenant la date du prochain lancement
include("next_mod.php");
$date_actuelle=time();
if($date_actuelle>=$next_mod)
 {
 //--si la date est dépassée tu lances ici ta procédure.
 ta_procedure();
//--puis tu mets à jour la date du prochain lancement
//--dans mon cas j'ajoute 86400 secondes qui correspond à 24H...
 $next_mod=time()+86400;
 $code="<?";
 $code.="\$next_mod=$next_mod;";
 $code.="?>";
 $adresse="next_mod.php";
 $myfile=fopen($adresse,"w");
 fwrite($myfile,$code);
 fclose($myfile);
 }
?>


Il suffit qu'une personne se connecte à la page sur laquelle se trouve ce script pour que la date de mise à jour soit vérifiée, et la procédure lancée le cas échéant... Wink
 
Fab le Fou Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Mar Déc 20, 2005 14:23    Sujet du message: Planification sous PHP !?

Cela implique qu'il faille qu'un internaute aille sur le site...
Quels sont les possibilités avec le "cron", est-il possible de le manipuler facilement ? Car je souhaiterai pouvoir planifier pour chaque newsletter une date différente (heures différentes,etc..).

Y a t-il des aides ? Des scripts déjà existant !

Dans le cas contraire j'obterai pour la solution de Fab le Fou (un merci au passage Wink )
 
thierry8 Visiter le site web du posteur
Bourriquet
WRInaute passionné
WRInaute passionné

Inscrit le: 19 Sep 2005
Messages: 632

URL permanente de ce messagePosté le : Mar Déc 20, 2005 14:43    Sujet du message: Planification sous PHP !?

Le cron fonctionne sur le principe d'un fichier qui contient les informations suivante :

minute<espace>heure<espace>jourdumois<espace>mois<espace>jourdelasemaine<espace>la commande

Par exemple

25 6 30 12 * /home/users/www/script.php

Exécutera le script le 30/12 à 6h25. Maintenant tu peux faire choses un peu plus poussée

25 6 * 12 1 /home/users/www/script.php

Lancera le script tout les lundi du mois de décembre à 6h25 .

Ou alors:

*/5 6 30 12 * /home/users/www/script.php

Lancera le script toutes les 12 min (60/5) à 6h le 30/12

Ou bien encore

25 6 30 10-12 * /home/users/www/script.php

Lancera le script le 30/10, le 30/11 et le 30/12 à 6h25 .

Pour faire ça en ligne de commande , tu as juste à taper :
crontab -e

Il va t'ouvrir un éditeur de texte, et tu tapes une tâche par ligne.

Sinon, si tu as webmin, c'est encore plus simple, tu as gestionnaire graphique Wink

Et si tu es chez un hébergeur mutualisé, normalement tu lui fourni le nom de tes scripts ainsi que les programmations, et normalement y a pas de souci Smile
 
Bourriquet Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Mar Déc 20, 2005 15:02    Sujet du message: Planification sous PHP !?

Ok j'ai bien compris le principe cela à l'air relativement "simple" !

Mais la tu me dis d'ouvrir un éditeur via une ligne de commande !
Mais si je ne peux accèder directement au serveur.

En fait ce que je souhaite faire, c'est via un script en php activer ou programmer un cron.

exemple:
Citation:
DEBUT
Je fais ma news indique date et heure à laquel l'envoit doit s'effectuer...
Je valide
Le script récupère les infos (enregistre pour la news, et les infos nécessaire)
Programme (par exemple créer le fichier en question) à la période prévue
FIN


A ce niveau est-il possible de passer des paramètres ?
25 6 * 12 1 /home/users/www/script.php

Le fichier contenant la tâche et la période est supprimer une fois lue ? (bien entendue si cela est périodique il reste, mais le cas contraire ?)

Merci de ton aide.
 
thierry8 Visiter le site web du posteur
yvan02
WRInaute impliqué
WRInaute impliqué

Inscrit le: 02 Mar 2005
Messages: 411
Localisation: Strasbourg

URL permanente de ce messagePosté le : Mar Déc 20, 2005 15:20    Sujet du message: Planification sous PHP !?

il y a pas mal d'hébergeurs qui acceptent de planifier des taches.

Par exemple, j'utilises cette fonctionnalité sur mon site qui est chez OVH (60GP), pour purger ma BD et lancer des inscriptions automatiques la nuit. Il suffit de leur faire un mail en leur indiquant le script php à lancer, l'heure, et la périodicité. Wink


Dernière édition par yvan02 le Mar Déc 20, 2005 15:26; édité 1 fois
 
yvan02 Visiter le site web du posteur
Bourriquet
WRInaute passionné
WRInaute passionné

Inscrit le: 19 Sep 2005
Messages: 632

URL permanente de ce messagePosté le : Mar Déc 20, 2005 15:25    Sujet du message: Planification sous PHP !?

tu peux le faire via une commande en php comme shell_exec mais il faut que l'utilisateur qui lance le script ait les droits de modification des cron .

Il est tout à fait possible de passer des paramètres au script PHP. Pour l'extension CLI tu aurais du utiliser $_SERVER['argc'] et $_SERVER['argv'], mais avec le module CGI, ça se présente comme si tu tapais l'URL du script dans le navigateur :

script.php?page=prout&id=2

En ligne de commande (et donc dans le cron) :

/chemin/absolu/vers/le/script.php<espace>page=prout<espace>id=2

Le cron permet de programmer des taches cycliques. Si tu veux programmer une tache ponctuelle, tu dois soit :
- virer la ligne une fois la tâche accomplie
- ne pas passer par cron mais par 'at'

Syntaxe de at :

at heure:minute mois/jour/annee tache

Par exemple :

at 6:25 11/12/05 /home/users/script.php

Programmation de la tâche pour le 12 novembre 2005 à 6h25.


Dernière édition par Bourriquet le Mar Déc 20, 2005 20:12; édité 1 fois
 
Bourriquet Visiter le site web du posteur
cybervince
WRInaute passionné
WRInaute passionné

Inscrit le: 01 Aoû 2004
Messages: 869
Localisation: Montpellier

URL permanente de ce messagePosté le : Mar Déc 20, 2005 20:10    Sujet du message: Planification sous PHP !?

Fab le Fou a écrit:

Il suffit qu'une personne se connecte à la page sur laquelle se trouve ce script pour que la date de mise à jour soit vérifiée, et la procédure lancée le cas échéant... Wink

A utiliser avec précaution, car si le traitement que tu souhaite lancer périodiquement est relativement long, et bien le visiteur qui va tomber dessus il va mettre du temps à afficher sa page.
Personnellement pour mes url de maintenance, c'est ma machine chez moi qui les appelle via sa crontab (ca fait pareil que si c'était webcron) en fesant un wget de la bonne url (et j'ai un .htaccess qui sécurise le truc avec un user, mais à la rigueur vu que c'est que des scripts de maintenance qui ne font des purges...)
 
cybervince Visiter le site web du posteur
Fab le Fou
WRInaute accro
WRInaute accro

Inscrit le: 02 Déc 2004
Messages: 1484
Localisation: Lorient

URL permanente de ce messagePosté le : Mer Déc 21, 2005 10:39    Sujet du message: Planification sous PHP !?

Bah disons que si ton script est long il vaut mieux le mettre en pied de page, mais de toute façon dans mon cas il s'agit d'un script assez rapide (du fait même qu'il est lancé tous les jours).

Ton système sous-entend que ta machine soit connectée 24h/24.

Un de mes buts, c'est que mon script soit complètement portable sur tout serveur supportant le php, donc intégré au code.
 
Fab le Fou Visiter le site web du posteur
Bourriquet
WRInaute passionné
WRInaute passionné

Inscrit le: 19 Sep 2005
Messages: 632

URL permanente de ce messagePosté le : Mer Déc 21, 2005 10:52    Sujet du message: Planification sous PHP !?

cybervince > dans son cas ça pourrait aussi fonctionner sous window avec une tâche planifiée sur son poste.

Mais je ne suis pas trop pour ce genre de méthode car elle n'est pas très "propre", au niveau du débugage et de la conception.
 
Bourriquet Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort