- 1
[Opened] Avis sur traitement SQL lourd, cmdline?
Posted by kerseub on 04/17/2008 22:05
Bonjour à tous. Dans le cadre d'un projet Jelix, je dois mettre au point une "moulinette" travaillant sur une importante quantité d'information (estimation 3000 Requêtes SQL, la moulinette devrait tourner pendant plusieurs dizaines de minutes). Pour être efficace cette moulinette doit, pendant son exécution, couper l'accès au site. La question est que je ne sais pas comment m'orienter:
- Traitement au sein d'un controleur classique?
- Création d'un cmdline qui va( par exemple) renommer le contrôleur d'accueil avant de faire tous les traitement ?
Que me conseillerez-vous?
[Opened] Re: Avis sur traitement SQL lourd, cmdline?
Posted by laurentj on 04/17/2008 22:36
Salut,
Déjà, il est clair que ta moulinette devra être faite dans un script en ligne de commande. Car si tu lances ça à partir d'un navigateur, tu vas avoir des problèmes de timeout. Donc un controleur cmdline et tout le toutim.
Pour la fermeture du site, je ferais un truc simple :
- au demarrage du script en ligne de commande, je créerais un fichier CLOSED par exemple, dans le repertoire temp de l'application. Et à la fin du script, ce fichier serait supprimé.
- dans les points d'entrées de ton site (en particulier index.php), avant tout include, je testerais l'existance du fichier CLOSED. Si il existe, je ferais un include d'une page HTML toute bête qui annonce la fermeture du site. Et sinon je lancerais le processus habituel (ce qu'il y a dans un index.php classique de jelix).
[Opened] Re: Avis sur traitement SQL lourd, cmdline?
Posted by kerseub on 04/17/2008 22:44
D'accord nous partons donc sur le cmdline. je suppose que les méthodes d'accès à la BdD sont les même que pour un contrôleur classique, mais je ne vois pas dans la doc comment lancer mon script (ou une commande système au sens large) depuis un contrôleur...
[Opened] Re: Avis sur traitement SQL lourd, cmdline?
Posted by bballizlife on 04/18/2008 09:25
Tu n'a pas trouvé assez d'explications sur la documentation cmdline ?
Sinon personnellement je trouve ça bizarre de fermer un site régulièrement comme ça. Tu n'as pas trouvé un moyen qui éviterait ce désagrément ?
N'importe comment c'est dans la doc
[Opened] Re: Avis sur traitement SQL lourd, cmdline?
Posted by bballizlife on 04/18/2008 17:44
Le lancement d'une commande système, tu ne le trouveras pas dans la documentation Jelix mais dans celle de php, comme par exemple exec()
Je vois pour votre problématique, pas toujours pratique à gérer en effet.
N'importe comment c'est dans la doc
[Opened] Re: Avis sur traitement SQL lourd, cmdline?
Posted by laurentj on 04/19/2008 10:07
je ne vois pas dans la doc comment lancer mon script (ou une commande système au sens large) depuis un contrôleur...
Tu veux dire que tu veux lancer le script en ligne de commande, depuis une page web ?
- dans ce cas, ça ne sert à rien de faire un script en ligne de commande, c'est plus logique de faire directement le traitement dans le controleur de ta page html
- tu va avoir les même problème de timeout: tes traitements risquent d'être trop long et le navigateur va clore la connection. Résultats: tes traitements seront interrompus.
Tes traitements, qui apparement vont être long et lourd, doivent être lancé par le système ou à la main en ligne de commande, mais surtout pas à partir d'un lien ou d'un formulaire de ton appli web.
Solution alternative : retravailler ton schema de base de donnée, optimiser tes index, tes tables, optimiser tes requêtes voir même faire des procédures stockées (c'est plus performant que de faire les même traitements purement en php), de façon à avoir un temps de traitement le plus court possible.
[Opened] Re: Avis sur traitement SQL lourd, cmdline?
Posted by e-media on 04/24/2008 23:48
Pour passer outre le timeout dans la page tu peux utiliser la fonction set_time_limit
e-media
- 1