PHP echo performans

3 Cevap php

Bunu yankı önce tüm içerik toplamak yeri hep PHP bir çıkış değişkeni kullanıyorum. Sonra ben size paketlerin içine çıkış değişkeni bölmek ve sonra her paket yerine bütün çıkışı değişken echo eğer iyi performansı almak (ben nereye olsa hatırlamıyorum) okumuştum.

Nasıl gerçekten?

3 Cevap

Eğer echo ile gerçekten büyük dizeleri çıkış varsa, birden çok yankı ifadeleri kullanmak daha iyidir.

Bunun nedeni Nagle's algorithm verileri TCP / IP üzerinden tamponlu neden olur yol olduğunu.


Found an note on Php-bugs about it:
http://bugs.php.net/bug.php?id=18029

Bu, otomatik olarak küçük parçalar halinde büyük dizeleri kırmak ve onları yankı:

function echobig($string, $bufferSize = 8192) {
  $splitString = str_split($string, $bufferSize);

  foreach($splitString as $chunk) {
    echo $chunk;
  }
}

Source: http://wonko.com/post/seeing_poor_performance_using_phps_echo_statement_heres_why

Ben daha iyi bir çözüm Burada yer olduğunu düşünüyorum ....

http://wonko.com/post/seeing_poor_performance_using_phps_echo_statement_heres_why#comment-5606

........

Beyler, ben bile daha aşağı daralmış düşünüyorum!

Daha önce PHP tamponlama senaryonuzun sonuna PHP yarış izin verecek, ancak Apache tüm bu verileri geçmeye çalışırken daha sonra hala "askıda" olacak, dediği gibi.

Şimdi bu ölçü (önceki yorum bakın) ama aslında PHP içinde bekleme süresini ortadan kaldırmak için değil, sadece başardı. Ben SendBufferSize yönergesi ile Apache SendBuffer artırarak yaptım.

Bu hızlı PHP üzerinden veri iter. Ben sonraki adım hızlı Apache çıkmak olacaktır sanırım ama Apache ve ham ağ bant genişliği arasındaki başka yapılandırılabilir tabaka aslında var olup olmadığından emin değilim.