Un script périodique de nettoyage MySQL qui démarre tout seul et s'éxecute toute [Résolu]

m_abdlmalek 21 Messages postés mardi 16 janvier 2007Date d'inscription 5 septembre 2011 Dernière intervention - 16 mai 2011 à 18:21 - Dernière réponse : m_abdlmalek 21 Messages postés mardi 16 janvier 2007Date d'inscription 5 septembre 2011 Dernière intervention
- 19 mai 2011 à 10:20
Bonjour,

Je suis sur un projet de site professionnel, je suis pas trop mal sur PHP mais seulement autodidacte, pas académique :-D. Svp j'aurais besoin d'aide sur une fonction, en gros je voudrais nettoyer périodiquement une table MySQL de membres qui n'ont pas validé leur inscription par email (les inscrits c'est géré dans une autre base). Je veux que çà se lance tout seul, que çà ne finisse jamais même en refermant après et même si le serveur redémarre, elle doit redémarrer dés que le serveur est ok.

Je suis sur une piste suite à des idées ici et là sur le web mais j'ai peur de l'essayer (vu qu'une fois lancé çà ne va plus s'arrêter) et que çà me fiche le système en l'air alors je voudrais l'avis d'experts :

Page : Nettoyage.php
<?php
set_time_limit(0);
ignore_user_abort(1);
function function_shutdown() {require 'nettoyage.php'};
register_shutdown_function(function_shutdown());
while(1){Ma_requête_de_nettoyage_SQL}
sleep(86400);
}
<script language="javascript" type="text/javascript">window.close();</script>
?>

Me corriger svp si vous voyez qqch de pas net :-D

Sinon aussi pour utiliser ces fonctions est-ce qu'il y a un paramétrage particulier sur PHP.INI ?

Merci bcp
Cordialement

Malik

Google never dies...
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 19 mai 2011 à 08:10
3
Merci
Bizarre.. de mon coté sur mon XP --> Taches planifiées
J'ai 'Executer' et je peux taper une ligne de commande. Là je peux taper 'php toto.php'
S.

Merci syndrael 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de syndrael
cod57 1660 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 16 mai 2011 à 21:02
0
Merci
bonsoir
connais tu les cronjob
un serveur qui appeles pour toi une page ...
c'est souvent une option de ton hebergeur ...
http://www.cronjob.com/cron-job-tutorials.html
Bonne programmation !
Commenter la réponse de cod57
m_abdlmalek 21 Messages postés mardi 16 janvier 2007Date d'inscription 5 septembre 2011 Dernière intervention - 17 mai 2011 à 00:06
0
Merci
Bonjour cod57,

Merci pour la réponse, mais je crois que les Crons c'est plutot pour les utilisateurs Linux, non ? or je suis sous Windows j'utilise Easy PHP 5 + Apache + MySQL, et je souhaite pas trop utiliser le module At j'ai entendu que c'était pas trop fiable

Sinon mon code ci-dessus est pas bon ?
J'ai vu sur le web que c'était possible avec juste un script php de ce genre

Et sincèrement j'ai pas envie de faire dépendre mon site d'une tâche qui serait réalisée par un autre site

Merci Bcp
Cordialement


Google never dies...
Commenter la réponse de m_abdlmalek
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 17 mai 2011 à 08:49
0
Merci
Alors Plannificateur de tâche sous Windows, et tu lances périodiquement une ligne de commande du style 'php nettoyage.php'
S.
Commenter la réponse de syndrael
m_abdlmalek 21 Messages postés mardi 16 janvier 2007Date d'inscription 5 septembre 2011 Dernière intervention - 17 mai 2011 à 13:29
0
Merci
Bonjour,

Ok merci pour la réponse Syndrael.
Cà règle le problème de la répétition journalière et la limite de temps.

J'ai découvert ce module c'est très intéressant. J'aurai juste 3 questions :

1) Est-ce que la tâche Windows reste enregistrée même en cas de redémarrage du serveur ?
2) Et si par exemple je programme pour 12h et que à 11h30 le serveur est down jusqu'à 13h00, est-ce qu'il se rappelle qu'il ne l'a pas lancée et la lance illico au redémarrage ou il ne lancera qu'à 12h le lendemain ?
3) Sinon également si j'utilise cette tâche j'ai plus besoin logiquement de garder toutes les fonctions de la page nettoyage.php mais uniquement ma requête SQL. Et plus la peine non plus de garder la fermeture Javascript n'est-ce pas ?
4) Si je ne garde pas la fermeture Javascript, et donc si je ne ferme pas cette page lancée chaque jour par le serveur, est-ce que les pages ouvertes ne risquent pas de remplir le cache navigateur et me bloquer le disque dur plus rapidement (c vrai que c'est que quelques Ko mais bon à terme dans quelques années vaut mieux être prévoyant)
5) Et si je ne ferme pas les pages nettoyage après leur exécution, n'y a t-il pas de risque qu'un utilisateur membre la voie ? Et dans ce cas comment permettre uniquement à la tâche Windows d'accéder à la page (faut-il faire un .htaccess ? c'est possible en combinant avec une tâche Windows dont le fichier cible se trouve dans un dossier protégé par .htaccess ?)

Désolé c'est beaucoup à la fois mais mon problème est bien précis

Merci d'avance pour vos réponses éclairées et pointues en la matière !

Google never dies...
Commenter la réponse de m_abdlmalek
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 17 mai 2011 à 14:13
0
Merci
1. oui
2. il faudra relancer le script manuellement, mais si ton projet est professionnel, rares doivent être les interruptions. Après un jour sans nettoyage ne doit pas être bloquant dans le principe.
3. Nettoyage.php ne doit fournir que des opérations liées au serveur. Donc pas d'HTML, Javascript etc..
4. Tu ne passes plus par le navigateur, c'est une ligne de commande tu ne passes même plus par IIS
5. Le script nettoyage.php ne doit pas être accessible depuis un navigateur.
S.
Commenter la réponse de syndrael
m_abdlmalek 21 Messages postés mardi 16 janvier 2007Date d'inscription 5 septembre 2011 Dernière intervention - 17 mai 2011 à 15:40
0
Merci
Merci Bcp OK c'est bon j'ai une bonne visibilité sur les choses désormais

Juste une dernière chose :

5) Donc finalement est-ce que .htaccess ne va pas bloquer la tâche Windows qui va l'exécuter périodiquement ?
En d'autres termes si je protège la page nettoyage.php avec un .htaccess, cela ne bloque-t-il que les navigateurs sur la page php ou bloquera-t-il aussi la tâche Windows ?

Merci pour ta réponse
Best Regards

Google never dies...
Commenter la réponse de m_abdlmalek
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 17 mai 2011 à 15:50
0
Merci
.htaccess = Apache.. donc comme tu ne passes pas par Apache y'a pas de souci.
Mais d'un autre coté ça veut dire que tu laisses ta page accessible depuis un navigateur, sinon ton htaccess ne sert à rien.
S.
Commenter la réponse de syndrael
m_abdlmalek 21 Messages postés mardi 16 janvier 2007Date d'inscription 5 septembre 2011 Dernière intervention - 17 mai 2011 à 16:10
0
Merci
Voilà tu viens de mettre le doigt sur le problème !!!!

C'est que lors de la définition de la tâche, il demande l'application à utiliser et l'objet à exécuter.

Or si je mets Internet Explorer ou un navigateur je pourrai la lancer mais comme tu dis çà ouvre la page à IE ou Mozilla si qqun connaît l'adresse directe de la page...

Si je mets le fameux php.exe, je tombe dans Apache et là je suis encore bloqué par .htaccess...

Que faut-il faut faire alors ?



Merci
Cordialement


Google never dies...
Commenter la réponse de m_abdlmalek
m_abdlmalek 21 Messages postés mardi 16 janvier 2007Date d'inscription 5 septembre 2011 Dernière intervention - 19 mai 2011 à 10:20
0
Merci
Bonjour,

Ok je vais essayer çà.
Cà a l'air d'être la solution

Merci Bcp
Cordialement

Google never dies...
Commenter la réponse de m_abdlmalek

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.