Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

PHP ve Mysql'de Performans iyileştimesi

Konu, 'PHP' kısmında HunTER tarafından paylaşıldı.

  1. HunTER

    HunTER ...

    Kayıt:
    15 Ağustos 2002
    Mesajlar:
    8,684
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    Sorum su localde performans gozardı edılerek hazırlanan bır sıte web te cakarsa ne yaparsınız? Yanı MySql'den hayvan kadar bır toblonun sadece satır sayısını bulmak ıcın "select * from table" gıbı sorgular gondermıs, ıc ıce donguler kullanmıs algorıtmaları onemsememıssenız ve sonuc olarak sıtenız web ten gelırken nerdeyse ıstek zaman asıma ugruyorsa artık cokmu gectır? Yoksa gerıye donup yapılabılecek bıseyler varmıdır?

    Not: Sorguların buyuk bı kısmını duzelttım.. "select * from table" yerıne "select id from table" yazdım mesela.. Yınede gozle gorulur bır performans artısı saglayamadım.. Acaba hostmu yavas? Ilgılenenler ıcın http://www.radyobogaz.com/main.php

    Ikıncı not: Bı krıtermıdır bılmem ama hızlı oldugu soylenen bır baska hostun (turkservers) ping cevap suresı ıle kendı hostumun ping cevab suresını karsılastırdıgımda 650ms' yeye 115ms gıbı ezıcı bır ustunlukle kendı hostum onde cıkıyor.. Bu durumda hostum hızlımı yanı?
     
  2. mkarabulut

    mkarabulut Misafir

    peki mysql_connect yerine mysql_pconnect denedin mi ?
     
  3. HunTER

    HunTER ...

    Kayıt:
    15 Ağustos 2002
    Mesajlar:
    8,684
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    Evet en basından berı oyleydı zaten..

    Bak sana bır ornek verıyım

    Kod:
           ....
    
    Bu gırıs sayfasındakı haberlerı lısteleyen fonksıyon.. Sayfa nerdeyse 1 dakıkada acılıyor.. Ve ben ADSL baglantıya sahıbım..

    Bu kod harıcınde calısan soldakı servısler menusunu olusturan bır fonksıyon, arka planda bır oturum yonetımı ve sagdakı ekonomı ve hava durumu gıbı tabloları olusturan bı script.. Dosya kullanımı yok baska bır url den bılgı alınmıyor ve boyutları 10-20k yı gecmeyen bıkac grafık ve resım var sadece.. Sımdı ben nerde hata yapıyorum? Ornegın resım boyutlarını ogrenmek ıcın haber_tur* fonsıyonları ıcınde @getimagesize("Image/Haber/$foto"); gıbı bı kod kullanıyorum.. Bu tıp seylermı performansı olumsuz etkılıyor? Yoksa yukardakı gıbı algorıtmalarımmı hatalı?
     
    Son düzenleme yönetici tarafından yapıldı: 20 Eylül 2002
  4. mkarabulut

    mkarabulut Misafir

    mysql_result() mı kullanıyorsun yoksa ? Ben bu kodda göremedim ama mysql_num_rows() ı alıp döngü yaptığına göre şüphelendim.

    Eğer mysql_result() kullanıyorsan, bu fonksiyon acayip bi performans düşüşüne sebep olur. Onun yerine zaten çoğu zaman mysql_fetch_array,mysql_fetch_object kullanılır.

    bilemiyorum sen hangisini kullanıyorsun ?
     
  5. HunTER

    HunTER ...

    Kayıt:
    15 Ağustos 2002
    Mesajlar:
    8,684
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    Evet mysql_result kullanıyorum.. Bunuda orneklemem gerekırse verılerı

    Kod:
     function degiskenler($field,$row)
     {
             global $haber_baslik,$haber_icerik, ...,
    
             $haber_baslik = mysql_result($field,$row,"haber_baslik");
             $haber_icerik = mysql_result($field,$row,"haber_icerik");
             ....
     }
    
    
    Seklınde elde ettıkten sonra bıde suzgecten gecırıyorum

    Kod:
     function kontrol($func)
     {
             global $haber_baslik,$haber_icerik, ...,
    
             $haber_baslik = stripslashes($haber_baslik);
             $haber_icerik = ereg_replace("\r","<br>",$haber_icerik);
             ....
     }
    
    ve elde ettıgım global degıskenlerı heryerde kullanıyorum.. Bu performansı ne derece etkıler? mysql_query yerıne verılerı mysql_fetch_array ıle alsam yapıyı bozmadan yoluma devam edebılırmıyım yoksa bu global degıskenler ve suzgecleme fonksıyonlarından damı vazgecmelıyım?
     
  6. mkarabulut

    mkarabulut Misafir

    global değişkenleri kullanman ve string süzgeçlerin önemli değil.

    Tüm sorun bence mysql_result() kullanman,bu fonksiyonun yerine mysql_fetch_array'e veya fetch_object e geçmen gerek hemen.

    Sorun bence hallolacaktır. Bu fonksiyonun basit kulanımını şurda bi ara yazmıştım.

    http://www.ceviz.net/mysql.php?p=001

    Şunu da inceleyeblirsin.

    http://www.ceviz.net/php2.php?p=001

    Kolay gelsin
     
  7. HunTER

    HunTER ...

    Kayıt:
    15 Ağustos 2002
    Mesajlar:
    8,684
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    Teşekkürler :) Performans oldukca arttı.. Yalnız bıkac sorum var..
    Sence

    Kod:
    $id = mysql_result(mysql_query("select id from table where durum=0"),0,"id");
    
    Gibi kucukcuk de olsa mysql_resultun kullanıldıgı tum satırlarıda

    Kod:
    $kayit = mysql_fetch_array(mysql_query("select id from table where durum=0"));
    $id = $kayit["id"]
    
    seklınde duzenlemelımıyım? Ugrastıgıma degermı? Ve bunlar dısında tavsıye edebılecegın bısey varmı? Ornegın mysql_free_resultu her sorgudan sonra kullanmalımıyım?

    Not: Bu arada verdıgın ornekte sorgununun ardından baglantıyı kesmısın.. Ben pconnect kullandıgıma gore bunun bı anlamı yok sanırım?
     
    Son düzenleme yönetici tarafından yapıldı: 21 Eylül 2002
  8. mkarabulut

    mkarabulut Misafir

    Emin ol uğraştığına değer. Çünkü mysql_result() oldukça kötü performanslı bir fonksiyon ve pek de kullanılmıyor...


    evet dediğin gibi bence de mysql_close() pek gerekli görünmüyır orada.

    Bu arada mysql_free_result kullanmayı ihmal etme. Action Query lerde (INSERT, UPDATE,DELETE ) mysql_query yerine mysql_unbuffered_query kullanabilirsin. Performansı artıracaktır.

    Şimdilik başka bi şey aklıma gelmiyor , nedense kodları gördükçe aklıma geliyor :)
     
    Son düzenleme yönetici tarafından yapıldı: 21 Eylül 2002
  9. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
  10. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Lostof haklı bunlarıda oraya eklemek faydalı olur bencede.
     
  11. mkarabulut

    mkarabulut Misafir

    Bu forumun arşiv özelliği varmıydı yaw ? Aslında böyle güzel bi kaç konuyu oraya ekleyerek forum kullanıcılarına çok faydalı bi şey çıkarmış olurduk...
     
  12. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Olması lazım kurcalarız bir ara.