IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PHP et multi-tâche ?


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1
    Points : 1
    Points
    1
    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

  2. #2
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 162
    Points : 2 015
    Points
    2 015
    Par défaut
    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.

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Je pense que tu souhaites exécuter un script en background, via AJAX. De cette manière le navigateur n'est pas ralenti.

  4. #4
    Membre éclairé
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Points : 773
    Points
    773
    Par défaut
    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.. :-)

  5. #5
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 162
    Points : 2 015
    Points
    2 015
    Par défaut
    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.

Discussions similaires

  1. Réponses: 21
    Dernier message: 20/04/2010, 10h40
  2. Config multi-tâche récente
    Par ullgom dans le forum Ordinateurs
    Réponses: 6
    Dernier message: 26/09/2007, 22h32
  3. [Code Source] Moteur d'exécution multi-tâches
    Par SaumonAgile dans le forum Mon programme
    Réponses: 5
    Dernier message: 28/06/2007, 09h08
  4. Modifier l'Ordre Icones Barre des Tâches (multi-tâches)
    Par larose51 dans le forum Windows XP
    Réponses: 1
    Dernier message: 27/06/2007, 01h11
  5. [Code Source] Moteur d'exécution multi-tâches
    Par SaumonAgile dans le forum Contribuez
    Réponses: 2
    Dernier message: 17/06/2007, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo