PHP Programlama ile ilgili her programcinin dikkat etmesi gereken performans kurallari :
( John Lim internet sitelerinden derlenmis ve cevrilmistir )
1. Bir metod statik ise onu statik olarak tanimlayiniz. Bu 4 kat daha performans saglar.
2. echo, print ten daha hizlidir. bkz ( http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 )
3. echo nun parametrelerini kullanin ( string siralama gibi ).
4. For donguleriniz icin duracagi noktayi donguden once belirleyiniz. Dongunun icinden kontrol yaptirmak daha maliyetlidir.
5. Bosa cikan degiskenleri unset() ile hafizadan cikariniz. Ozellikle buyuk boyutlu degiskenler ve diziler hafizada ne kadar yer kaplarsa genel islemler o kadar yavaslar. Yazilimin kullanici sayisi arttikca sunucuda hafiza sorunlari olusabilir.
6. Nesne tabanli kod yazarken __get, __set, __autoload gibi fonksiyonlardan uzak durmaya calisin.
7. require_once() ve include_once() fonksiyonlari require() veya include() den cok daha maliyetlidir.
8. include yaparken tam dosya yolu verin. Eger vermezseniz genel pathlerin tamami taranacaktir dosyanin bulundugu yere kadar olan butun alt dizinler tek tek kontrol edilecektir.
9. Scriptinizin basinda zaman verisine ihtiyac duyuyorsaniz time()
yerine $_SERVER[’REQUEST_TIME’] kullanabilirsiniz.
10. regex yerine strncasecmp, strpbrk ve stripos kullanabilirsiniz.
11. str_replace, preg_replace den daha hizlidir ama strtr, str_replace den 4 kat daha hizlidir.
12. Eger bir fonksiyonunuz hem normal hem dizi degiskenleri parametre olarak aliyorsa
ve parametre listeniz cok uzun degilse, normal degiskenler icin ayri, dizi degiskenler icin ayri fonksiyon yazabilirsiniz
13. Cok sonuclu durumlar icin if-elseif-else yerine switch-case kullanmak daha hizlidir
14. @ karakteri ile hata korleme scriptinizi yavaslatir.
15. Apache’nin mod_deflate modulunu aktiflestirin
16. Veritabani ile isiniz bittiginde baglantiyi kesin. ( mysql_close() )
17. $row[’id’] seklindeki kullanim $row[id] den 7 kat daha hizlidir
18. Hata mesajlari scriptinizi yavaslatir.
19. for dongusunun parametre bolumunde fonksiyon kullanmayin. Ornek :
for ($x=0; $x < count($array); $x)
Buradaki count() fonksiyonu her adimda tekrar calistirilir
20. Artirma yaparken fonksiyonlar icindeki lokal degiskenleri artirmak en hizlisidir. Ayni sekilde fonksiyonlarin icinde lokal degiskenleri kullanmak genel degiskenleri kullanmaktan daha hizlidir.
21. Global bir degiskeni artirmak (++) lokal bir degiskeni artirmaktan 2 kat yavastir.
22. Bir nesnenin degerini artirmak (ornek: $this->deger++) lokal degiskeni artirmaktan 3 kat daha yavastir.
23. Tanimlanmamis bir degiskeni artirmak, onceden tanimlanmis degiskeni artirmaktan 9-10 kat daha yavastir.
24. Bir global degisken tanimlayip onu kullanmazsaniz bu scriptinizi yavaslatir. PHP her artirmada o degiskenin global olup olmadigina bakar.
25. Metot cagirmak bir sinifta tanimlanmis metotlardan bagimsizdir. Test metodundan once, 10 tane daha metod ekleyip test etmemize ragmen performans degismedi.
26. Turetilmis siniflarin icindeki fonksiyonlar asil sinifin fonksiyonlarindan daha hizlidir.
27. 1 parametreli ve icerigi bos olan bir fonksiyon lokal bir degiskenin 7-8 kere artirilmasina esit guc tuketir.A function call with one parameter and an empty function body takes about the same time as doing 7-8 $localvar++ operations. A similar method call is of course about 15 $localvar++ operations.
28. Degiskenlerde cift tirnak (") yerine tek tirnak (') kullanmak daha performanslidir. Cunku PHP cift tirnakli degiskenlerin icinde baska degisken olup olmadigina bakar. Ornek : echo "..." yerine echo '...' kullanmak daha hizlidir. Ama eger tirnaklarin icinde degisken olacaksa (Ornek: echo "Yasiniz $yas oldugu icin...";) yine mecburen ciftli tirnak kullanmak zorundasiniz...
29. echo ile birden fazla degiskeni ekrana yazdirirken birlestirmek icin nokta (.) yerine virgul (,) kullanmak daha hizlidir. $a="A"; $b="b"; $c="c"; echo $a.$b.$c; yerine echo $a,$b,$c; Not: Bu yontem sadece echo ile calisir.
30. Apache php sctiptini ziyaretciye HTML den 2-10 kat arasinda daha yavas ulastirir. Bu yuzden gerekmeyen yerlerde PHP ( ve benzeri ) scriptleri kullanmamalisiniz.
31. PHP scriptleriniz her calismalarinda yeniden derlenirler. Bu da performans kaybina sebep olur. PHP opcode cache uygulamalari ( zend optimizer , apc, ioncube php accelerator, xcache, turck mmcache gibi ) scriptlerin 1 kere derlenmesini ve degismedikleri surece tekrar derlenmemelerini saglayarak %20 ile %100 arasinda performans artisi saglayabilir.
32. Olabildigince Cache yapmaya calisin. Memcached kullanin. Memcached, yuksek performansli nesne tamponlama ( cache ) sistemidir. Dinamik web uygulamalarinda veritabani uzerindeki yuku azaltarak hiz ver performans artisi saglar. Daha genis bilgi icin
33. Stringlerle calisirken string boyutunu almak icin strlen() kullanirsiniz. Bu fonksiyon herhangi bir islem yapmadan, zaten zval (PHP icinde degiskenleri tutmak icin kullanilan bir C dili yapisi) yapisinda bilinmekte olan bir degeri size gosterir. Yine de strlen() bir fonksiyondur ve bir cagri kullanir. Bu yuzden de yavastir. Bu asamada isset() fonksiyonunu kullanarak bir miktar hiz elde edilebilir. if (strlen($degisken) < 5) { echo “Degisken cok kisa”; } yerine if (!isset($degisken{5})) { echo “Degisken cok kisa”; }
isset() kullanmak, strlen() kullanmaktan daha hizlidir. Cunku isset() fonksiyonu icin strlen() fonksiyonunda yapilan bir cok islem yapilmaz.
34. Bir degiskenin degerini artirmak veya eksiltmek icin $i++ veya $i-- kullanmak ++$i veya --$i kullanmaktan daha yavastir. Bu sadece PHP ye ozgu birseydir. ++$i icin 4 opcode kullanilir, ancak $i++ sadece 3 opcode'a ihtiyac duyar.
35. Nesne Yonelimli Yazilim (OOP) hersey degildir. Cunku nesne yonelimli programlamada her fonksiyon icin hafizada bir yer ayrilir.
36. Her veyi yapisini sinif ( class ) olarak olusturmayin, diziler ( array ) ayni oranda kullanislidir.
37. Metodlari gereksiz yere bolmeyin. Tekrar kullanacaginiz kodlari belirleyip ona gore calisin.
38. Sadece ihtiyaciniz oldugunda metodlari ayirin.
39. Make use of the countless predefined functions
40. Eger kodunuzda cok fazla zaman ve islemci harcayan fonksiyonlari C ile extension olarak yazabilirsiniz. Ornek : template ve caching sistemi olarak kullanilan sistemlerden php_blitz bir php extensionu olarak calismaktadir. Bu yuzden php koduyla calisan smarty gibi sistemlere performans acisindan fark atmaktadir.
41. Kodunuzu tanimlayin. Yani neresinde ne kadar zaman ve islemci harcandigini tespit edin. Bunun icin Xdebug gibi bir eklenti kullanabilirsiniz. Bu sayede kodunuzun nerelerde yavasladigini tespit edebilirsiniz.
42. mod_gzip kullanin. mod_gzip, html ciktiyi zipleyerek sIkIstIrIr ve kullaniciya gidecek veri miktarini %80 e kadar dusurerek hizda artis, trafikte azalma saglar.