• 02-06-2010, 16:27:42
    #10
    Bu tarz bin tane konu var ama ciddi proje yok ortada.
  • 02-06-2010, 16:48:05
    #11
    Bence asıl olay GZip, basit bir php sayfayı gzip yapınca kafadan hızlanıyor bir kere.

    Duruma göre içeriği düzenli yada kısıtlı göstermede işe yarar mesela;
    galeri.php içinde 50 tane küçük resim gelse 50 sinin yüklenmesi sayfayı yavaşlatabilirken,
    galeri.php?sayfa=2 tarzı bir ilave ekleyerek 25 e 25 bir bölümleme yapılabilir.

    Mesela WordPress Smf gibi yazılımların bazı temalarında gereksiz php fonksiyonlar olabilir, 2 kere login bölümü fonksiyon olarak çağrılabilir, ana sayfa için önemli olmayan bir kısım ana sayfada gösterilmesi bunun için zaman ve CPU harcanması negatif performans etkisi olarak düşünülebilir.

    Ama bence ilk önce Google Page Speed özelliği ile başlanmalı. Orada ilk ne düzeltilecek bize bildiriyor.
  • 02-06-2010, 21:11:34
    #12
    by_grafitus adlı üyeden alıntı: mesajı görüntüle
    If-else ile swich arasında fark vardır. swich daha hızlıdır. Ya da mysql_fetch_assoc, mysql_fetch_array'dan daha fazla bellekte yer harcar. <<< Alın da size "güsel" örnek.
    mysql_fetch_assoc daha fazla mı harcar? array her değeri hem ismi hem de sıra numarasıyla iki farklı şekilde kaydediyorken, assoc niye daha fazla yer harcıyor?

    BHCoder adlı üyeden alıntı: mesajı görüntüle
    macera aramayın kendinize. önce mysql den kurutulun. sonra performans konusuna gelelim
    MySQL'de ne var ki hocam? Wordpress, SMF gibi birçok kişinin adını bildiği sistemler bile MySQL kullanıyorken...
  • 02-06-2010, 21:19:06
    #13
    Üyeliği durduruldu
    by_grafitus adlı üyeden alıntı: mesajı görüntüle
    If-else ile swich arasında fark vardır. swich daha hızlıdır. Ya da mysql_fetch_assoc, mysql_fetch_array'dan daha fazla bellekte yer harcar. <<< Alın da size "güsel" örnek.
    tam tersini yazmak istemişsindir eminim array daha fazla yer tutuyor assoc ile row un toplamı kadar

    sql verilerini serialize-unserialize veya json_encode - decode ile saklayıp dat tipli dosyalardan belli periyotlarla okuyarak önbellek alanında saklayıp buradan okuyarak epey bir optimize sağlayabilirsiniz ama dat dosyalarının boyutunu azaltmaya çalışın daha sonra bunlar ram ve sunucuda fazla yer tutabilir olabilidiğince az veri saklayın

    örneğin : veritabanında hem resim adresini hem seo adını saklamayarak bu işi yapabilirsiniz SeoAdi diye bir sutununz olur resim adreslierini resimler/SeoAdi.uzanti gibi gibi saklayabilirsiniz sadece uzantisi saklamak veya hepsini belli bir format ta tutmak bile hem mysql veritabanından hem cache yapcaksanız o dosyada bellek ve alandan tasarruf etmenizi sağlar.
  • 02-06-2010, 21:38:47
    #14
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Evet, saho. Düzelteyim teşekkürler.
  • 03-06-2010, 07:51:37
    #15
    Üyeliği durduruldu
    Hkan adlı üyeden alıntı: mesajı görüntüle


    MySQL'de ne var ki hocam? Wordpress, SMF gibi birçok kişinin adını bildiği sistemler bile MySQL kullanıyorken...
    wordpress smf performanslı sistemlermi. ve nereye kadar performanslılar. mysql performansına bağlı performansları vardır.
    dünya çapında bilinen birşey zaten bu mysql orta seviye sistemlerde kullanılır.
    mysql düşmanı değilim ama gerçekler var

    bir postgresql bir oracle denemeni tavsiye ederim. tabi 10 kayıtlı/hitli siteniz yoksa

    global düşünürsek olay bu. tabi bunlar kapsamlı konular tek cümle ile bitirilemez.

    kısaca her zaman söylediğimiz.

    num rows ile saydırma yapmayın COUNT kulllanın
    fetch array yerine fetch assoc kullanın

    veritabanında işlem yaparken tüm alanlar(*) seçmeyin,

    temiz kod yazın. gelişmeleri takip edin.

    echo "<table witdh=\"455\">"; böyle kod yazmayın.

    vs vs vs
  • 03-06-2010, 08:17:55
    #16
    Üyeliği durduruldu
    BHCoder adlı üyeden alıntı: mesajı görüntüle
    bir postgresql bir oracle denemeni tavsiye ederim
    kendiniz kurmadiginiz surece internet ortaminda oracle bulmaniz zor. birde internette kullanmaya kalktiginiz zaman lisansi bir hayli kalın

    postgresql denemenizi bende tavsiye ederim
  • 03-06-2010, 18:50:21
    #17
    Alıntı
    MySQL'de ne var ki hocam? Wordpress, SMF gibi birçok kişinin adını bildiği sistemler bile MySQL kullanıyorken...
    diyorsun ama bunların kodlama düzeneğini bir kontrol et'ki
    benim smf forumumda 800 k konu actık smf konu acmadan önce mütiş performans vardı 800 k konu acıldıkdan sonra forumun acılmasında yaklasık 1 dk oynama oldu

    mysqldede performans cok önemli bir cok örneği var
    php'ye gelince o kadar zorki performans arttırmak arkadaşın dediği gibi
    Bu bir performans örneği midir? Evet. Sizin projelerinizde bu küçük kod diye tabir ettiğiniz hatalar bir tür sorun teşkil etmeyebilir ama bizim için durum böyle değil. Performans konusu gerçekten çok geniş bir konu. "Güsel" örneklerinizle konuya cevap verebilirsiniz.
  • 04-06-2010, 18:50:49
    #18
    Önbellekleme öneriyorum.

    Çoğu insan aradığını bulana dek o linkten o linke tıklar durur forumlarda, sonra geri döner az önce tıkladığına yeniden tıklar bakar vs.

    Forumuna göre, ya da sayfasına göre önbellekleme bu davranış kalıplarının yarattığı yükü hafifleterek toplam bir hızlanma sağlayacaktır.

    Yapılacak şey basit: PHP scriptinin başında son oluşturulma tarihi gönderiyoruz HTTP başlığında, bir de Expires. Sonra da bu script her çağrıldığında GET_IF_MODIFIED_SINCE (şu tarihten beri değişmiş mi) türü çağrıları yokluyoruz. Bir tarayıcı (firefox vs.) önbelleğindeki bir sayfayı yeniden yüklerken bu GET_IMS çağrılarından yollar. Bizse, örneğin arama sonuç sayfaları için yarım saattir değişmediği bilgisi vs. gönderebiliriz. Ya da forum üst grupları için 5-6 dakikadır değişmediği, konular içinse 2-3 dakikadır değişmediği bilgisi gibi... Eğer yan etkiler konusu hakkında endişelerimiz varsa bunu yalnızca sistem yoğun olduğunda veya yoğun trafik olan saatlerde uygulatabiliriz.

    Genel, her scriptin başında kullanabileceğimiz bir fonksiyon hazırlayalım:

    Alıntı
    <?php

    function hizlan($miktar) {

    $agent=$_SERVER['HTTP_USER_AGENT'];
    if ( $miktar == 1 || preg_match("/bot/i",$agent) || preg_match("/Slurp/i",$agent) ) {
    $fake_last_modified = gmdate('D, d M Y ', (time())) . "00:00:00 GMT";
    $fake_expires = gmdate('D, d M Y ', (time())) . "23:59:59 GMT";
    } else {
    if ( $miktar < 5 ) $miktar = 5;
    if ( $miktar > 30 ) $miktar = 30;

    $saat=floor(gmdate('i',(time() - 00))/$miktar)*$miktar;
    if ($saat == "0" ) $saat="00";

    $sonsaat=floor(gmdate('i',(time() - 00))/$miktar)*$miktar+$miktar;
    if ($sonsaat >= 60 ) $sonsaat="59";

    $fake_last_modified = gmdate('D, d M Y H:', (time()));
    $fake_last_modified .= $saat.":00 GMT";

    $fake_expires = gmdate('D, d M Y H:', (time()));
    $fake_expires .= $sonsaat.":00 GMT";

    }

    if ( getenv("HTTP_IF_MODIFIED_SINCE") == $fake_last_modified ) {
    header("HTTP/1.1 304 Not Modified");
    exit;
    }
    header('Last-Modified: '.$fake_last_modified);
    header('Expires: '.$fake_expires);
    }

    ?>
    Evet, işlevin başında çağrının bir arama motoru örümceği tarafından mı yapılıp yapılmadığına bakıyoruz. Çünkü genelde bir sürü örümcek sürekli olarak çok linkli sitemizi tarar, geri gelip bir daha tarar. Bunlara o an yükledikleri sayfanın gün boyunca değişmeyeceği bilgisini gönderiyoruz ki aynı gün bir daha gelmesinler. Ayrıca özel bir durum olarak 1 dakika verilmişse süre olarak, gene tüm gün değişmediği bilgisi gönderiyoruz. Kimi sayfalar için bu özel durumu kullanmak isteyebiliriz.

    Sonra ise önbellekte kalması istenen dakika parametresini sınırlar içine alıyoruz. En az 5 en çok 30 dakikalık sınırlar belirledik.

    Sonra tarayıcıya gönderilecek Greenwich saatlerini hesaplatıyoruz. Bulunulan dakikanın belirtilen dakikadaki modülüsünün alt basamağından itibaren o kadar dakika boyunca değişmeyeceği bilgisi iletilecek. Bu yaklaşım ortalamada belirtilen dakikanın yarısı süresince önbellekleme sağlar.

    Örneğin, saat 10:02'de bir sayfayı istemişsek, ve 5 dakikalık önbellekleme parametresi seçmişsek, bu fonksiyon bize o sayfanın 10:00'da oluşturulduğunu ve 10:05'e dek değişmeyeceğini söyleyecek. Bizse o sayfaya saat 10:04'te yeniden tıklarsak, bilgisayarımızdaki tarayıcı program sunucuya hiç uğramadan, doğrudan önbelleğinden sayfayı yeniden oluşturacak.

    Bu yaklaşım, hem bant genişliği masrafını hafifletecektir, hem kullanıcıların sayfalar arasında daha hızlı dolaştığını hissetmesini sağlayacaktır, hem de sunucu bilgisayarın üstündeki işlem yükünü gayet hafifletecektir.

    Kullanımı şöyle:

    Alıntı
    <?php
    // Bir scriptin en başı
    include("hizlan.php");
    hizlan(10);
    Bu örnekte 10 dakika boyunca o php scripti değişmeyecek bilgisi gönderdik.

    Eğer sunucunun loadavg yükünü okuyabiliyorsak, yüke göre farklı bekleme süreleri belirtebiliriz:

    Alıntı
    <?php
    function loadavg() {
    $buffer = "0 0 0";
    $f = fopen("/proc/loadavg","rb");
    if (!feof($f)) {
    $buffer = fgets($f, 1024);
    }
    fclose($f);
    $load = explode(" ",$buffer);
    return max((float)$load[0], (float)$load[1], (float)$load[2]);
    }
    ?>
    Bu işlev sunucu bilgisayarın yükünü döndürür.

    Yukardaki örneğin içine gömersek:

    Alıntı
    <?php
    // Bir scriptin en başı
    include("hizlan.php");
    include("loadavg.php");
    $yuk=loadavg();
    if ( $yuk > 5 ) {
    hizlan(30);
    } elseif ( $yuk > 4 ) {
    hizlan(20);
    } elseif ( $yuk > 1 ) {
    hizlan(10);
    } else
    hizlan(5);
    }
    Ya da saate göre yaparız. Örneğin Saat 16 - 19 arası genelde Türkiye'de internet yoğundur. Eğer sunucu Türkiye'de değil ise uygun saat kaymalarını hesaba katmayı unutmayarak, şu örnekteki gibi bir hızlanma uygulaması yapabiliriz:

    Alıntı
    <?php
    // Bir scriptin en başı
    include("hizlan.php");
    if ( date('G') >= 16 && date('G') <= 19 ) {
    hizlan(10);
    } else {
    hizlan(5);
    }
    Sanıyorum, kimi php sayfalarında bunun epeyi yararı olacaktır.

    İşe yaraması dileğiyle.