ob_start()

  • Onderwerp starter Onderwerp starter roben
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

roben

Gebruiker
Lid geworden
4 dec 2008
Berichten
65
Hallo,

Ik heb een website gekocht, en deze bevat scripts met ob_start() en ob_get_clean
Nu begrijp ik dat dit alles buffert, en dat ik daardoor nogal veel geheugen van de server gebruik.

Maar nu wil ik dus die ob_start en ob_get_clean overal weghalen, maar er word ook ob_get_content gebruikt.
Wat heeft dit voor gevolgen? werkt die ob_get_content dan nog wel, en wat kan ik hier eventueel voor in de plaats gebruiken?

Mijn doel is namelijk die grote buffer te verminderen.

m.v.g. Roben.
 
Je zult alle aanroepen naar ob_get_contents() moeten herschrijven. Als je geen verstand hebt van PHP is het waarschijnlijk simpelweg niet te doen.

Als je wel verstand van PHP hebt, ligt het ergens tussen "een paar uur werk" en "ik had de hele applicatie net zo goed zelf kunnen schrijven" afhankelijk van hoe vaak en waarvoor het gebruikt wordt.

Heb je al gemeten hoe groot de buffer wordt en hoe zwaar het voor je server is op deze manier? Tenzij je pagina's echt MBs aan html bevat heeft je machine er waarschijnlijk helemaal geen last van.
 
Je hebt een product gekocht, dus het lijkt mij verstandig om bij de maker aan te kloppen ipv zelf dingen te wijzigen.

Verder moet je ook bedenken waarom output buffering aan is gezet, dit kan namelijk positief zijn (pagina wordt in één keer naar de browser gestuurd en niet in stukjes en is bovendien te compressen, dus minder verspilling van bandbreedte - ook kunnen er functies uitgevoerd worden over alle data in de buffer) of negatief (programmeur is lui en zet op onlogische plaatsen cookies en headers). Dat het bufferen veel ram kost kan ik me niet voorstellen, maar dit zul je ongetwijfeld al hebben onderzocht.

Als je echt zeker weet dat je het wilt wegslopen:
  • ob_get_clean() gebruik je om de buffer op te halen en in een variabele te stoppen. Als je dit weghaalt zullen alle echo/print/etc opdrachten direct worden uitgevoerd; controleer dus of er in de oude situatie geen verdere verwerking is geweest van de buffer (bijvoorbeeld het parsen van een template of een algemene zoek/vervang opdracht).
  • ob_get_contents zal niet meer op de oude manier werken omdat de buffer leeg is/niet bestaat. Ook hier moet je dus goed opletten wat er in de oude situatie met de data werd gedaan (de buffer werd hier tenslotte NIET leeg gemaakt).
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan