Comment attaquer le probleme php/mysql + chrono ? - PHP - Programmation
Marsh Posté le 21-08-2008 à 23:57:07
quand je crée le compte de regis, j'ajoute aussitot la date d'expiration
passé la date d'expiration, le compte est desactivé . Une fois par jour , ou une fois par heure, tu fais passer un script de nettoyage qui vire les comptes inactifs
Marsh Posté le 22-08-2008 à 00:00:05
flo850 a écrit : quand je crée le compte de regis, j'ajoute aussitot la date d'expiration |
Ok, donc pour le moment si je veux que ce soit une tache automatisé, je suis obligé d'avoir chez moi une page du genre bot.php qui soit lancé et fasse ce boulot ?
Marsh Posté le 22-08-2008 à 13:34:00
delete from table where date_inscription<"time()-3600" facon timestamp
delete from table where date_inscription<'date("Y-m-d H:i:s",time()-3600)' si objet date dans ta bdd
voilà la plus simple des solutions
Marsh Posté le 23-08-2008 à 01:09:18
grosbin a écrit : delete from table where date_inscription<"time()-3600" facon timestamp |
Merci du tuyau, j'allais bientot attaquer le probleme de face
Marsh Posté le 23-08-2008 à 02:18:49
Tu laisses les comptes s'entasser sans les supprimer et au moment d'accéder au compte tu vérifie ou non s'il devrait déjà être supprimé et si oui tu le supprimes
pas besoin de bot comme ça
Marsh Posté le 24-08-2008 à 10:35:18
Une solution si tu es sous Windows et que tu as accès à l'ordi :
Tu fais une tache planifiée, qui lance en ligne de commande un script (option 'q' fait une execution silencieuse) qui efface les comptes.
Dans les autres cas (et c'est pas plus mal) :
Tu inclues ce script dans chaque page. Ainsi si le bonhomme veut faire une action et que son délai est dépassé, il se verra refuser l'acces. De même chaque visiteur sur chaque page qu'il visite effacera automatiquement les comptes obsolètes. Si c'est pas de la délégation de tâches, ça !
Marsh Posté le 24-08-2008 à 11:10:48
Y a pas besoin d'être sous Windows pour planifier une tâche hein ... Sous Unix y a cron qui le fait bien (mieux).
Marsh Posté le 24-08-2008 à 11:28:22
et pourquoi tu veux virer le compte en fait, si tu as la date de fin de validité du compte tu checks juste ça au moment de faire l'authentification.
Marsh Posté le 24-08-2008 à 11:37:38
Oui mais bon ça peut être chiant suivant la longueur du cycle de vie d'un compte d'avoir 60% de ta base occupée par des comptes désactivés
Marsh Posté le 24-08-2008 à 14:25:32
Dans la majorité des sites on peut considérer que non (ou alors on s'attaque à très gros ), mais pourquoi garder des trucs inutiles (qui vont donc à la longue ralentir le tout) alors qu'en 1 ligne on peut les balancer?
Et suivant où il est hébergé (notamment en mutualisé), ça se peut qu'il ait une limite "administrative" à la taille de ses bdd
Marsh Posté le 24-08-2008 à 22:44:54
Une base de 100Mo sur les mutu suffit souvent très amplement (+possibilité de les accumuler, quand elles sont sans firewall = pratique car les sites sur différents serveurs peuvent accéder aux memes données mysql )
suffit de "pruner" un peu ses enregistrements et le tout passe doucement
Marsh Posté le 25-08-2008 à 09:25:50
c'est pas avec un record style id_user, date_début_validité, date_fin_validité que l'on va exploser une base de 100mo, surtout que si jamais tu l'explosais c'est très certainement parce que ton contenu fonctionnel va l'exploser ou alors c'est qu'ils se connectent juste pour se connecter mais ne rien voir/utiliser.
et je ne vois pas ou serait le problème d'avoir 60% voire même 95% de compte obsolète dans la base, en les supprimant tu détruis de l'information alors que ce n'est pas nécessaire.
perso je pense que se demander/programmer un code pour ça c'est dépenser de l'énergie sur un truc qui va dégrader le système d'information inutilement.
Marsh Posté le 25-08-2008 à 14:56:25
+1 Je serais plus dans l'idée de garder les comptes inactifs, ca peut servir pour des logs ou stats par exemple et pour le peu de place que ca prend
Marsh Posté le 21-08-2008 à 23:55:01
Plateforme / Hebergement
mysql 5 / php
Free
Objectif:
Admettons que REGIS s'inscrive sur le site Dans1HeureTuExplose.com à 8h du matin.
J'aurais dans base mysql une donnée enregistré sur regis du genre
nom age ville date
REGIS 40ANS PARIS 8H
Maintenant, il faudrai que son compte soit supprimé 1H apres son inscription, donc si mes calculs sont justes, a 9h pile le compte de REGIS sera supprimé !
Mon Probleme:
J'ai plusieurs méthodes pour executer la destruction du compte de Regis a 9h, mais je ne sais absolument pas si je m'y prend bien, si il existe une astuces pour faire ca simplement.
Mes solutions proposé:
1ere solution)
Je code une page bot.php qui sera lancé sur mon pc, qui se raffraichis toutes les 1 minutes. Le script compare l'heure d'inscription de REGIS dans la base de données, à celle du serveur. Si l'heure d'inscription date de plus d'une heure alors le script execute la requette de suppresion du compte a REGIS !
2eme solution)
Ben en fait je croyais en avoir plusieurs, mais non
Ce que j'attend de vous:
Comment aborderiez vous le probleme ?
Il y a t-il une solution simple sous mysql pour executer des procédures automatiques ?
Le top ca serais que j'ai une méthode qui soit précise, a la minute pres.
Message édité par Profil supprimé le 22-08-2008 à 00:03:31