Je suis sur un hébergement mutualisé qui ne propose pas de cron. Déçu de nombreuses fois par les services gratuits (et même payants) de cron distant, j'ai opté pour une autre solution.
L'idée est simple : sur chaque page affichée, j'appelle un tout petit script, qui se charge de regarder dans une table pour voir s'il doit faire un traitement automatique ou non.
Voici une version simplifiée de ce script :
sachant que j'ai une table "todo" avec 3 champs :
Le seul défaut de cette technique c'est que si personne ne vient sur le site, aucun script ne s'execute... Mais en même temps personne ne voit qu'ils ne se sont pas exécuté puisque personne n'est venu sur le site
L'idée est simple : sur chaque page affichée, j'appelle un tout petit script, qui se charge de regarder dans une table pour voir s'il doit faire un traitement automatique ou non.
Voici une version simplifiée de ce script :
Code :
if ($requete = mysql_query('SELECT idtodo, script FROM todo WHERE date < '.time().' ORDER BY date LIMIT 0,1')) {
if ($todo = mysql_fetch_assoc($requete)) {
mysql_query('UPDATE todo SET date = '.(time() +60).' WHERE idtodo = '.$todo['idtodo']);
if (file_exists(DIRINCLUDE.'todo/'.$todo['script'].'.php')) {
// lancement de la tache
include(DIRINCLUDE.'todo/'.$todo['script'].'.php');
}
// suppression de la tache traitée
mysql_query('DELETE FROM todo WHERE idtodo = '.$todo['idtodo']);
}
}
sachant que j'ai une table "todo" avec 3 champs :
- idtodo : identifiant
- script: nom du fichier contenant le script à executer
- date : timestamp du moment auquel le script doit s'executer
Le seul défaut de cette technique c'est que si personne ne vient sur le site, aucun script ne s'execute... Mais en même temps personne ne voit qu'ils ne se sont pas exécuté puisque personne n'est venu sur le site