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

Langage PHP Discussion :

ob_start et require


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 37
    Points
    37
    Par défaut ob_start et require
    Bonjour,
    je vous écris au sujet d'une question d'optimisation

    est-ce que si je fais plusieurs fois (environ 3-4 fois) par page ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ob_start();
    require(ROOTDIR.$this->ArrayConfig["includes"]["views_common_dir"].$page);
    $this->content = ob_get_contents();
    ob_end_clean();
    est-ce que c'est aussi lourd qu'un simple require, ou est-ce à éviter ?

    Merci de vos avis

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Je ne comprends pas: si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ob_start();
    require(ROOTDIR.$this->ArrayConfig["includes"]["views_common_dir"].$page);
    $this->content = ob_get_contents();
    c'est que tu souhaites récupérer le contenu de la sortie de ton require précédent ?

    Si tu fais un simple require, tu ne récupèreras pas le contenu, non ? Ce sont donc 2 fonctionnalités différentes. Donc pas comparables.

    Si j'ai tout compris ...

    ERE

  3. #3
    Membre actif Avatar de tim974
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 175
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par mbsofts Voir le message
    Bonjour,
    je vous écris au sujet d'une question d'optimisation

    est-ce que si je fais plusieurs fois (environ 3-4 fois) par page ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ob_start();
    require(ROOTDIR.$this->ArrayConfig["includes"]["views_common_dir"].$page);
    $this->content = ob_get_contents();
    ob_end_clean();
    est-ce que c'est aussi lourd qu'un simple require, ou est-ce à éviter ?

    Merci de vos avis
    Ton code est incomplet non? Il te manque un ob_end_flush() pour terminer la tamporisation.

    Et pour répondre à ta question, NON, ce code n'est pas plus optimisé si tu le répètes plusieurs fois.

    Par contre, si tu utilises seulement ton $this->content, je pense que tu peux grappiller quelque chose.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 37
    Points
    37
    Par défaut
    oui tout à fait il manque le ob_end_flush, voici la fonction complète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function GetLayout($page=""){
    	/* On inclut le contenu de la vue demandée */
    		ob_start();
    		require(ROOTDIR.$this->ArrayConfig["includes"]["views_common_dir"].$page);
    		$this->content = ob_get_contents();
    		ob_end_clean();
    		ob_end_flush();
     
    		return $this->content;
    	}
    cela me permet d'inclure à l'endroit que je souhaite la sortie de mon require.
    je n'utilise effectivement que le $this->content

    Mon template de page est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="site">
    	<div id="main">
    		<div id="switch"><?=$this->GetLayout("nav1.phtml") ?></div>
    		<div id="header"><?=$this->GetLayout("navigation.phtml") ?></div>
    		<div id="content"><?= $this->layer ?></div>
    		<div id="footer"><?=$this->GetLayout("footer.phtml") ?></div>
    	</div>
    </div>

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    +1 avec tim974, cela ne va rien optimiser.

    PS: avec ton dernier code je comprends où tu voulais en venir !

    ERE

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 37
    Points
    37
    Par défaut
    oui c'est ca, mais c'est pas "dégueu" comme méthode ? Ca va pas me bouffer blindé de ressources si ? Qu'en pensez-vous ?

    J'ai des temps de génération de page rapides actuellement, avec seulement jquery qui est un peu long à charger.

    A ce sujet, si vous l'utilisez, que pensez vous de GOOGLE AJAX API ? C'est super je trouve, seul hic, j'utilise l'extension Ajax FORM qui n'est pas proposée par google, et j'arrive pas à la greffer à l'API google depuis mon serveur ?

    Quelqu'un a une idée ?

    Merci de vos réponses en tout cas

Discussions similaires

  1. Error : a column definition list is required ....
    Par chico_du_33 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/01/2006, 17h35
  2. "a required ressource was unavailable"
    Par tut dans le forum MFC
    Réponses: 9
    Dernier message: 15/03/2005, 09h49
  3. Erreur : '800a01a8' Object Required
    Par kiks dans le forum ASP
    Réponses: 4
    Dernier message: 01/12/2004, 13h58
  4. [Forms6i], required item
    Par orcl dans le forum Forms
    Réponses: 4
    Dernier message: 25/05/2004, 17h31
  5. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04

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