Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Php kodlarını yazarken dikkat edilmesi gerekenlerden...

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

  1. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    Aslinda ben yeniyim ama bazi eski arkadaslardan edindigin bir kaç bilgiyi buraya sunmayi uygun gördüm.


    1. PHP kodlarinizi yazarken " tirnak isaretini elinizden geldigince kullanmayin çünkü bu sekilde kod daha yavas çalisiyor.

    örnegin :
    $sql = "Select * from uyeler where id = $id";
    daha yavas çalisacaktir çünkü satir içerisinde bir degisken arayacaktir. Fakat:
    $sql = 'Select * From uyeler where id = '.$id;
    dersek PHP degiskenin satirin sonunda oldugunu bileceginden dolayi daha hizli çalisacaktir.

    2. Kod yazarken her zaman için ufak yazin. Çünkü kodlariniz Linux ortaminda sorun çikartabilir. Kedin yasadim çünkü.

    DEFINE('degisken', 'deger');

    seklinde yaptiginiz zaman sorunlar yasabiliyorsunuz.
    define('degisken','deger');
    seklinde kullanmak daha saglikli oluyor.


    simdilik aklima gelenler bunlar.
    Umarim isinize yarar.
     
  2. mkarabulut

    mkarabulut Misafir

    Bende bi kaç şey yazayım :

    1- eregi,eregi_replace fonksiyonlarının yerine preg_match,preg_replace kullanmak. Çünkü bunlar daha hızlı
    Aynı şekilde sadece belli karakterlere göre string parçalama yapılacaksa split() yerine explode() kullanmak daha hızlı. Split() i sadece regexp içeren durumlarda kullanmak avantajlı..

    2-Bir de son bi şey geçenlerde okumuştum. PHP ciler son versiyonlarda $HTTP_POST_VARS,$HTTP_GET_VARS gibi değişkenlere ek olarak aynı işi yapan $_GET,$_POST gibi değişkenler çıkardılar. şimdi ise resmen desteklenenler bu sonradan çıkan değişkenlermiş, eski değişkenlerde hala destekleniyor ama phpciler bunların kullanımını artık önermiyorlarmış. Belki ilerki bir versiyonda çıkarılabilir anlamına geliyor galiba...

    Neyse şimdlik benden de bu kadar...
     
  3. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    aklıma gelmişken

    mysql_fetch_object($query);
    mysql_fetch_array($query);
    mysql_fetch_row($query);

    hızına göre sıraladım. Aklıma gelmişken belirteyim bu arada kişilerin kendi yazdıkları fonksiyonları atmaları için bir bölüm açarsanız sevinirim.
     
  4. greenpage

    greenpage Üye

    Kayıt:
    21 Temmuz 2002
    Mesajlar:
    141
    Beğenilen Mesajlar:
    0
    Meslek:
    ögrenci
    Şehir:
    istanbul
    Bunlar çok faydalı ve harika bilgiler arkadaşlar biraz daha devam edebilirmiyiz?
     
  5. mkarabulut

    mkarabulut Misafir

    Tam olarak açıklarsan, açılmaması için hiç bir sebep yok...
     
  6. mkarabulut

    mkarabulut Misafir

    Bir iki tane
    1- Stringleri mümkün olduğu kadar php dışında ekrana yazdırmak ve echo'yu mümkün olduğu kadar az kullanmak...
    <?
    echo "asasd";
    echo "adasdasd";
    echo "asdasd";
    ?>

    yerine
    <?
    $str="asdasd";
    $str.="assadasd";
    $str.="asdasd";
    echo $str;
    ?>

    veya
    <?
    //php kodları
    ?>
    asdasd
    asdasd
    asdasd
    <?
    //kodlara devam..
    ?>

    2- Olabildiğince sql sorgularını az kullanmak...
    Ve olabildiğince sorgularda JOIN işlemini az kullanmak.

    Ya bununla ilgili bi ingilizce dokuman var,olmazsa onu burda versem mi ?
     
  7. mkarabulut

    mkarabulut Misafir

    Neyse dosyayı da verelim ... :
     
  8. mkarabulut

    mkarabulut Misafir

    Birde aklıma bi iki şey daha geldi,madem böyle bir konu açılmış onları da yazayım bari :

    1-mysql_free_result kullanmak:
    $query=mysql_query() kullandıktan sonra mutlaka
    mysql_free_result($query ) ile bellekten artık kullanılmayan şeyleri silin. Burada dikkat edilmesi gereken nokta

    $query=mysql_query("SELECT * FROM tablo1");
    echo mysql_result($query,0,0);
    //başka bir sorgu
    $query=mysql_query("sELECT * FROM tablo2");

    ikinci recordset de query değişkenine gönderilmesine rağmen,ilk recordset mysql_free_result yapılmadığı için onunla ilgili kaynaklar hala bellekte kalmaktadır. Yani aynı değişkeni kullansak bile mysql_free_result kullanmak zorundayız.

    $query=mysql_query("SELECT * FROM tablo1");
    echo mysql_result($query,0,0);
    mysql_free_result($query);
    //başka bir sorgu
    $query=mysql_query("sELECT * FROM tablo2");
    mysql_free_result($query);

    2- mysql_unbuffered_query() kullanmak :
    Eğer veritabanına gönderilen sorgu SELECT ise sorgu sonucu olacağından
    $query=mysql_query()
    ile sonuçları almak gerekir. Ama ya gönderilen sorgu INSERT,UPDATE,DELETE gibi action-query ise ? O zaman sorgu sonucu olmayacağından, mysql'in boşuna sorgu sonucunda buffer'a sonuçları atması bize gereksiz performans kaybına sebep olacaktır. Onun için
    mysql_unbuffered_query("dELETE FROM table");
    kullanmak daha avantajlı olacaktır.
     
    Son düzenleme yönetici tarafından yapıldı: 27 Ağustos 2002
  9. Mingitau

    Mingitau Misafir

    Ben str_replace daha hızlı diye biliyordum :)
     
  10. mkarabulut

    mkarabulut Misafir

    str_replace() bu fonksiyonların hepsinden hızlıdır ama
    <?
    $str=str_replace("mustafa karabulut","mkarabulut",$str);
    ?>

    şeklinde değişiklikler yapabilirsin. Eğer string içinde ilk üç karakteri rakam olan kelimeleri bul onları şununla dğiştir gibi bir şey yapmak istersen, regexp yani eregi_replace gibi bi şeyler kullanmak zorundasın.

    Ama haklısın düznli ifadelere ihtiyacın yoksa,str_replace daha hızlıdır.
     
  11. sokrates

    sokrates Daimi Üye

    Kayıt:
    8 Temmuz 2002
    Mesajlar:
    537
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programmer
    Şehir:
    istanbul
    :super:
     
  12. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    Teşekkürler M.Karabulut

    Alın size iyi bir fikir Türkiye de olmayan bir şey daha

    ben bir fonksiyon yazıyorum şu anda imbk dan döviz kurlarını alan bunu bu sitede yayınlamak istiyorum fakat forum açarsam belli bir süre sonra puf.
    ama bir bölüm olursa puf olmaz :p

    Bandwith yicez ama olsun :=)
     
  13. mkarabulut

    mkarabulut Misafir

    Yani üyelerin gireceği ve kendi kodlarını ekleyebileceği bir kod bankası aynen http://www.zend.com/codex.php de olduğu gibi veya http://www.evilwalrus.com/ gibi...

    Hmm. İYi bir fikir, peki elinizde veya bildiğiniz yerde buna benzer bi işi yapan bi script vaar mı ? Yoksa böyle bir scripti yapmak zorunda kalacaz. aslında bi bakıma kendimizin yapması daha iyi olur gibi...

    Neyse, bunu ayrı bi konu yapıp orada milete soralım bakalım böyle bi şeyde nasıl özelikler istiyorlar, ona göre yapalım derim.
     
  14. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    bi de şu değişken kullanımı aklıma geldi.
    $i = 1;
    $deneme1= 'look at';
    echo ${'deneme'.$i};

    gibi idi hatırladığım kadarı ile.
     
  15. mkarabulut

    mkarabulut Misafir

    Bir ara burada değişken değişkenlerin kullanımını tartışmıştık. ama şimdi bu konu performans odaklı bi konu olduğu için şuna değineyim dedim. Sanırım değişken değişkenleri kullanmak, onlarla yapabileceğin işi ilişkili dizilerle yapmaktan daha hızlı bi işlem...

    ama galiba... :)
     
  16. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    Aklıma gelmişken sölemek istedim sadece.

    Hangisinin hızlı hangisinin yavaş olduğunu bilmiyorum :confused:


    ne kızıyon yaa bacak kadar adama :aglama:
     
  17. mkarabulut

    mkarabulut Misafir

    Ya abi yanlış anlamışsın, ben senin dediğin olay daha hızlı galiba demek istemiştim :)

    Ne ağlıyon yaw, bak bende ağlarım :aglama:

    ;)
     
  18. hilmi

    hilmi Üye

    Kayıt:
    7 Temmuz 2002
    Mesajlar:
    94
    Beğenilen Mesajlar:
    0
    Meslek:
    ogrenci
    Şehir:
    Ankara
    Ağlamayın yaaa dayanamam bak bende ağlıycam :aglama::aglama::aglama:

    Şaka bir yana bu topici çok sevdim lütfen devam edin :)
     
  19. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0

    Hem şunu hatırlatayım hemde bu konu üste çıksın belki devam eden olur dedim :)
     
  20. BerkH

    BerkH Aktif Üye

    Kayıt:
    23 Şubat 2003
    Mesajlar:
    432
    Beğenilen Mesajlar:
    0
    Şehir:
    Strasbourg
    Yukarı cıkarman çok iyi olmuş. Yeni üyelikte zor iş :)