PHP çıktı tamponlama daha fazla kaynak gerektirir mi?

2 Cevap php

When performance is important including server memory,I am curious if using output buffering like ob_start(); in PHP has ANY performance hits over not using it? Does it use more memory or anything to use it?

Ben memcache ve APC ve bunu kullanmak ya da gerekiyorsa ben sadece merak ediyorum tüm diğer sunucu faaliyetler için elimden tüm belleği gereken bir yüksek trafik sitede benim durumda, bu benim için kullanışlı geliyor tek gerçek nedeni için başlık zaten iyon ekran gösterilir yüzden eğer yönlendirme sayfaları, ben bir başlık zaten gönderildikten sonra demeliyim başlıkları gönderme, benim site bu yüzden bazen ben vücut dosyasında ne bağlı yönlendirmek gerekir başlık, gövde, altbilgi dosya kurulum olduğunu Bir sorun yaratır, çıktı tamponlama kullanarak performansı hakkında çok sadece merak 1 çözüm ama başka çözümler vardır

2 Cevap

Ben bir yüksek trafik site ile kullanmak en iyisidir, ya da alıcı çok çok yavaş ise bu senaryonun kalanını yavaşlatabilir, çünkü en azından, ağ üzerinde kısmi yanıtlar göndermesini önlemek için, örtülü floş kapatın düşünüyorum.

Bir zaman içinde bütün yanıtı göndererek, php komut dosyası tarafından kullanılan tüm kaynakları serbest, böylece daha verimli olur.

Çıktı tamponlama yararlıdır iki nedeni vardır

  1. For performance so you're not waiting for the network socket to be available each time you echo.
  2. To avoid sending the headers too early. Once you've sent some content to the browser the headers must also be sent, after this is done then you cannot modify them e.g. if you want to set a cookie or change the content-type.

Isteği sonuna kadar bellekteki herşeyi depolama ceza elbette vardır. Bu, normalde, PHP sürecinin genel boyutuna göre oldukça küçük olmalıdır. Eğer tel aşağı büyük bir dosya gönderme planı, sürece Yani,. Bu durumda eğer periyodik ob_flush kullanarak tampon yıkayın () ve gömme () (veya geçici olarak tamamen tampon devre dışı) kullanılan tepe bellek azaltmak için olabilir.

Bence sen her zaman üzerinde olmalı ve istisnai durumlarda çıkarın.