Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2010, 17h29   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 1
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 1
Points : 0
Points : 0
Par défaut PHP et multi-tâche ?

Salut tout le monde
Je travaille avec php et Sybase, mais je constate qu'il n'ya pas de repertoire PHP/Sybase.
Du coup je poste ici.
Voici donc mon problème.

Je développe mon appli en php. et j'ai une BD sybase. Une fonctionnalité appelée 'Reload' consiste à l'appel d'une procédure stockée, qui elle procède à une série de Manipulations de la bd.(select/update...). La prod stock prend environ 5 min.
J'ai essayé de la simplifier, mais je n'ai pas de connaissances dans l'optimisation de requete sql, et une des vues sollicitées fait plus de 3millions de lignes! Ce temps d'attente de 5 min, et tres long, d'autant plus que cette fonctionnalité 'Reload' est assez sollicitée; d'où un gros problème de performance de mon appli, qui reste "bloquée" pendant 5min a chaque appel de 'Reload'.
Voici ma solution:
1. Créer une table qui contiendra le résultat de ma prod stock.
2. Créer un processus indépendant de mon appli qui mettrait à jour ma table de manière périodique. Le process vivra autant que l'appli vivra.

Mon problème est donc de savoir si le point 2 de ma solution est faisable ou non ? Comment le faire ? j'ai jetté un coup d'oeil sur les fonctions de flux sur php.net, mais ça ne me semble pas approprié.

Si quelqu'un peut m'aider, ce serait génial.
Merci
steveWill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 17h56   #2
Membre Expert
 
Avatar de gwinyam
 
Homme Mathieu ROBIN
Développeur Web
Inscription : mai 2006
Messages : 1 116
Détails du profil
Informations personnelles :
Nom : Homme Mathieu ROBIN
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2006
Messages : 1 116
Points : 2 142
Points : 2 142
Quand t'entend multi-tâches, je suppose que tu penses thread. Ce n'est pas la bonne approche en ce qui concerne un développement web et encore plus PHP où tu ne peux pas faire de threads, enfin pas explicitement.

Cependant, tout n'est pas perdu, puisque tu peux très bien faire un appel Ajax depuis ton appli. Celle-ci continuera d'être dispo pendant que le traitement se fait.
__________________
Mon blog techno et son billet hebdomadaire sur l'actualité jQuery. Et mon blog cuisine pour une personne.
Le bouton ne masse pas les pieds, mais ça aide la communauté.
gwinyam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 22h51   #3
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 134
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 134
Points : 2 877
Points : 2 877
Je pense que tu souhaites exécuter un script en background, via AJAX. De cette manière le navigateur n'est pas ralenti.
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 06h31   #4
Membre chevronné
 
Avatar de hornetbzz
 
Homme
Directeur commercial
Inscription : octobre 2009
Messages : 474
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 44
Localisation : France

Informations professionnelles :
Activité : Directeur commercial

Informations forums :
Inscription : octobre 2009
Messages : 474
Points : 681
Points : 681
Envoyer un message via Skype™ à hornetbzz
Bonjour,


Qq idées plus basées sur le bon sens paysan (en ts cas j'essaye) que sur mon expérience en la matière :

- le stockage du resultat de la requete périodique me parait une bonne idée,

- ça vaudrait probablement le coup de se fendre d'un peu d'optimisation de la db quand même, et des requetes (cf par exemple les requetes préparées, rapproches toi des spécialistes dans le forum adéquat)

- la génération périodique de la table qui contiendra le résultat de ma "prod stock" peut s'effectuer de moultes façons. A priori, rien ne t'empêcherait de ne conserver que ta partie de code qui génére le résultat, et appeler ce code périodiquement via un cronjob par exemple. Indépendemment du client.
Tu peux aussi couper à nouveau le probleme en deux : coder un "gros" cronjob de nuit, et un plus petit, moins consommateur de ressource, à intervalles réguliers dans la journée.

- pour la partie client, ça devrait déjà bien alléger les choses. Ceci dit, le client peut effectivement lancer une requete auprès du serveur sans être pour autant constitué prisonnier. Effectivement, la technique s'appelle Ajax: le client envoie une requete auprès du serveur, qui lui répond gentillement. Mais cela permettra uniquement (au client) d'éviter le rechargement de la page en cours, et de continuer à naviguer sur cette même page, tout en ayant lancé la requete auprès du serveur. Mais il faudra quand même que l'objet ajax puisse être récupéré sur la même page que la page appelante.

Tel que tu décrit ton probleme, la solution me parait plus être dans l'optimisation de ta base et des requetes, et effectivement dans la préparation d'une table "pseudo statique" de résultats que dans la problématique "Ajax".

Voilà pour la prose. Maintenant, bon courage et yaka yfôkon.. :-)
hornetbzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h00   #5
Membre Expert
 
Avatar de gwinyam
 
Homme Mathieu ROBIN
Développeur Web
Inscription : mai 2006
Messages : 1 116
Détails du profil
Informations personnelles :
Nom : Homme Mathieu ROBIN
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2006
Messages : 1 116
Points : 2 142
Points : 2 142
Citation:
Envoyé par hornetbzz Voir le message
- pour la partie client, ça devrait déjà bien alléger les choses. Ceci dit, le client peut effectivement lancer une requete auprès du serveur sans être pour autant constitué prisonnier. Effectivement, la technique s'appelle Ajax: le client envoie une requete auprès du serveur, qui lui répond gentillement. Mais cela permettra uniquement (au client) d'éviter le rechargement de la page en cours, et de continuer à naviguer sur cette même page, tout en ayant lancé la requete auprès du serveur. Mais il faudra quand même que l'objet ajax puisse être récupéré sur la même page que la page appelante.
Ceci dit, si c'est dans une vraie application à interface riche (RIA), ça ne pose aucun souci ce genre de choses, on peut continuer à naviguer entre plein de choses tout en étant en attente d'une réponse Ajax.
__________________
Mon blog techno et son billet hebdomadaire sur l'actualité jQuery. Et mon blog cuisine pour une personne.
Le bouton ne masse pas les pieds, mais ça aide la communauté.
gwinyam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h45.


 
 
 
 
Partenaires

Hébergement Web