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 :

Variable plus que GLOBAL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de myz-rix
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 143
    Par défaut Variable plus que GLOBAL
    Bonjour,

    Cela fait pas mal de temps que je cherche et ne trouve de solution à mon problème, peut être tout simplement parcequ'il n'y en a pas... mais je me dit que vu ce qu'on fait les créateur de php, ils ne peuvent pas n'avoir pas pensé à ça.

    Donc aujourd'hui dans mon cas précis, j'ai l'énorme et désagréable contrainte de maintenir un temps de réponse du serveur très rapide,
    le principe du code est simple, la page web affiche un message de bienvenue et ensuite lance un "calcul assez long" et pour finir affiche le résultat.
    Mon problème est que lorsque l'utilisateur suivant va afficher la page, il va aussi lancer le "calcul assez long".

    Oui je sais, il suffit de mettre dans un fichier ou dans mysql l'info que le calcul a deja été lancé..... mais non! cela demande trop de temps de calcul au serveur vu la quantité de fois que va être lancé mon code, l'écriture et l'interrogation répétées du fichier ou de mysql va ralentir le serveur.

    Parcontre, pour en venir à ce que je cherche, ma question est:
    N'est il pas possible de configurer une variable, serveur ou je ne sais quoi, qui serait accessible par tout les visiteurs ?
    qui garderait l'info que le calcul est fait afin que lorsque les visiteurs suivant se connectent le calcul ne se refasse pas (enfin pas avant un bon moment) ?

    en gros mon code ressemblerait a ça:

    afficher le message de bienvenue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $time = mktime();
    // si il y a plus de 100 secondes que le gros calcul a été lancé sur le serveur
    if(($time - $_XXX[timestamp]) >= 100)
     {
     lancement du gros calcul;
     $_XXX[timestamp] = mktime(); 
     }
    affichage des resultats

    cette variable $_XXX[timestamp] seraient donc consultable a chaque fois que le code serait lancé et par n'importe qui. cette dernier précision empechant l'utilisation des SESSIONS.
    C'est cet aspect la que je recherche et ne trouve pas, un peu l'equivalent d'une variable serveur.

    en vous remerciant par avance

    myz-rix

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Par défaut
    A mon avis le seul moyen d'avoir ce genre de comportement, c'est d'utiliser le cache... (apc par exemple)...

    Tu peux même imaginer un fichier PHP lancé via cron qui va te faire ton calcul automatiquement tous les X minutes et stocké la réponse en cache...

    Lorsque que qqun appelle ta page il appelle cette "variable" en cache et l'affiche instantanément....

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Salut, Je pense aussi qu'un cache est la meilleur solution c'est typiquement fait pour regler ce genre de probleme.

    Sinon tu eludes un peu rapidement la solution qui consiste a sauvegarder l'etat de ton calcul dans la BD.

    Apres tout en PHP, une fois que ton script s'arrette, il n'y a plus d'environement PHP, donc a ma connaissance si tu veux conserver un etat tu ne peux pas le faire dans un tableau. Tu peux sauvegarderun etat entre 2 execution d'un script cote client dans un cookies, cote serveur dans une session, la BD, ou un fichier.

    La BD etant propablement le meilleur choix car elle n'est pas necessairement plus lente qu'un fichier et gere mieux les acces concurents que le systeme de fichier.


    Il y a une exception a ce que je viens de dire, il existe une implementation de PHP en Java, qui peut alors acceder a des objets java permanent stocker sur le serveur.

  4. #4
    Membre très actif Avatar de myz-rix
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 143
    Par défaut
    Merci pour vos réponses, je vais chercher du coté du "cache" même si je vois pas encore comment cela fonctionne

  5. #5
    Membre très actif Avatar de myz-rix
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 143
    Par défaut
    Je viens de lire la doc pour le cache, c'est vrai que c'est intéressant comme système mais ça résout pas mon problème en fait car ça nécessite une écriture sur le disque... donc dans mon cas pas de gain de temps par rapport à mysql.

    Il faudrait un moyen de stocker l'info dans une variable mémoire.. mais c'est pas possible apparement sinon l'idée d'exécuter via un programme externe, cron ou autre...

    arf fait raler, c'est dommage quand même

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Par défaut
    Avec le cache apc tu peux stocker le contenue en mémoire.... Si mes souvenirs sont bons....

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Tu veux que des donnees persiste entre l'execution de plusieurs pages php.

    Regardes si tu ne peux pas stocker tes donnees dans des variables d'environement d'apache ?

    Sinon, a priori en php on fait ca avec une BD ou des fichiers.

    Je pense que tu mésestimes l'aspect BD. C'est souvent plus rapide qu'un
    fichier. En outre dans Mysql il y a un type de tables qui s'appellent MEMORY.
    A ta place je me renseignerai la dessus, car si je comprends bien ce type de table n'est pas accédé a partir du disque mais directement a partir de la mémoire.

    Sinon tu peux écrire un petit serveur/daemon sous linux qui fonctionne en permanence et conserve ce genre d'informations en memoire.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Citation Envoyé par myz-rix Voir le message
    Je viens de lire la doc pour le cache, c'est vrai que c'est intéressant comme système mais ça résout pas mon problème en fait car ça nécessite une écriture sur le disque... donc dans mon cas pas de gain de temps par rapport à mysql.
    Hum, où as-tu vu que ça nécessitait une écriture sur disque?
    Ce que dit la doc d'APC c'est que c'est en mémoire partagée, pas en fichiers.
    http://fr2.php.net/manual/fr/book.apc.php

  9. #9
    Membre très actif Avatar de myz-rix
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 143
    Par défaut
    l'APC écrit sur le pc, je viens de chercher à nouveau, c'est indirectement marqué sur le lien que tu m'as donné:
    http://fr2.php.net/manual/fr/apc.installation.php
    et c'est marqué ici clairement au paragraphe II-C-2.
    http://julien-pauli.developpez.com/tutoriels/php/apc/

    Maintenant l'ecriture sur le disque peut être desactivé, donc ça me convient

    L'idée de table TEMPORAIRE mysql est niquel aussi

    Je vous remercie pour vos réponses qui solutionnent mon problème

Discussions similaires

  1. Récupérer plus que 100 variables GET
    Par PKing dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2013, 20h58
  2. Réponses: 15
    Dernier message: 10/05/2007, 13h36
  3. Réponses: 6
    Dernier message: 14/02/2005, 11h53
  4. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22

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