Anasayfa FORUMLAR Üye Girişi Dosyalar Dersler İpuçları Yardımcı Araçlar Hakkımızda
KİMLER BAĞLI
Toplam Üye: 32638
Aktif Üye: 0
Aktif Ziyaretçi: 804
Üye Adı
Şifre
Beni Hatırla
          Yeni Üye KayıtYeni Üye Kayıt
          Şifremi UnuttumŞifremi Unuttum
FORUMLAR
 php script sorunu..
(6113 okuma, 2 yanıt)
 Php syntax error Sorunu..
(4753 okuma, 1 yanıt)
 php hosting scrip..
(12068 okuma, 13 yanıt)
 Php Türkçe Facebook Sayfa..
(7625 okuma, 4 yanıt)
 Php Düzenleme Programı..
(13694 okuma, 13 yanıt)
 Phpde Kategori Seçmek ??..
(4958 okuma, 1 yanıt)
 %100 Türk yapımı bir port..
(11831 okuma, 12 yanıt)
 localde veritabanına 2 so..
(8203 okuma, 7 yanıt)
 Php Kitabı ALıcam..
(11082 okuma, 13 yanıt)
 Php'de Sabit Değerler..
(5243 okuma, 2 yanıt)
 Php de echo ile printin ..
(4912 okuma, 2 yanıt)
 Block oluşturma..
(16347 okuma, 20 yanıt)
 Tablo İçinde Resim Nasıl ..
(4502 okuma, 0 yanıt)
 Türkçe Karakter Sorunu..
(4583 okuma, 1 yanıt)
 Küçük Resmin Üzerine Geli..
(7527 okuma, 4 yanıt)
 Get id ile veri alma....
(6691 okuma, 3 yanıt)
 noktalı tablo kenarı..
(8462 okuma, 7 yanıt)
 güne göre sayfa..
(6362 okuma, 4 yanıt)
 ID Yİ GÖNDEREMİYORUM..
(6787 okuma, 5 yanıt)
 TurkEkip - Bilgi Yarışmas..
(5323 okuma, 2 yanıt)
 php fotoğraf scri..
(6193 okuma, 3 yanıt)
 yardımcı olurmusunuz?..
(6963 okuma, 5 yanıt)
 <Link rel="Canoni..
(10776 okuma, 9 yanıt)
 .php yi hangi program ile..
(7644 okuma, 4 yanıt)
 Facebook paylaşim eklentı..
(8570 okuma, 6 yanıt)
 AEG_ZD: Girişiniz Engelle..
(4169 okuma, 0 yanıt)
 Fatal error: Call to a me..
(5014 okuma, 1 yanıt)
 Düzenli olarak sitem hack..
(4814 okuma, 1 yanıt)
 php-nuke ziyaretci sayacı..
(6639 okuma, 3 yanıt)
 Phpbb3 entegre yardım..
(6729 okuma, 4 yanıt)
 ufak bir yardım istegi..
(6089 okuma, 3 yanıt)
 üye listesi alt alta nası..
(5332 okuma, 2 yanıt)
 TCMB Döviz s&#99;ript..
(11926 okuma, 11 yanıt)
 Adres çubuğunda logo kull..
(11162 okuma, 10 yanıt)
 üye istatistikler..
(3842 okuma, 0 yanıt)
 Resim yüklenmiyor Veritab..
(4667 okuma, 1 yanıt)
 Ayar.php hatası Lütfen ya..
(5758 okuma, 3 yanıt)
 Tanımlama..
(3680 okuma, 0 yanıt)
 hata alıyorum..
(3794 okuma, 0 yanıt)
 require_once hatası..
(3932 okuma, 0 yanıt)
 Oyun sicripti arıyorum..
(7867 okuma, 7 yanıt)
 PHp veritabanından veri ç..
(7775 okuma, 5 yanıt)
 Script kurdum Ana sayfaya..
(4374 okuma, 0 yanıt)
 üyelik sistemi hakkında..
(5934 okuma, 3 yanıt)
 php formmail sorunum var ..
(5059 okuma, 1 yanıt)
 Yemek Tarifi Script Yorum..
(15675 okuma, 19 yanıt)
 Web sErvis Yardım..
(5825 okuma, 2 yanıt)
 php firma rehber s&#9..
(3907 okuma, 0 yanıt)
 php kod hatası? ustalar y..
(5151 okuma, 1 yanıt)
 Arkadaşlar Seo ' yu Subdo..
(5367 okuma, 1 yanıt)
Netopsiyon Online: Forums
Netopsiyon Online :: Başlık görüntüleniyor - PHP İle Kod Yazarken Performans
 AramaArama   RütbelerRütbeliler   ProfilProfil   GirişGiriş 


PHP İle Kod Yazarken Performans

 
Bu forum kilitlendi: mesaj gönderemez, cevap yazamaz ya da başlıkları değiştiremezsiniz   Bu başlık kilitlendi: mesajları değiştiremez ya da cevap yazamazsınız    Netopsiyon Online Forum Ana Sayfa -> PHP
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
Utku
Mesaj: 1+
Mesaj: 1+





Kayıt: Oct 24, 2002
Mesajlar: 28
Konum: Ankara

MesajTarih: 2004-07-22, 21:50:01    Mesaj konusu: PHP İle Kod Yazarken Performans Alıntıyla Cevap Gönder

Bu yazıda genel olarak PHP ile kod yazarken performans için dikkat edebileceğimiz bazı detaylardan bahsedilmektedir.

Bir program yada betiğin başarısı sadece işini tam yapmasıyla ölçülmez. Gerektiği kadar zaman kullanması, sistem kaynaklarını gerektiği kadar kullanması ve verimli çalışması da işin başarılı kabul edilmesinde etkilidir. Bahsettiklerimiz çoğu zaman işin doğru yapılması kadar önemlidir.

PHP gibi ağ tabanlı çok kullanıcılı sistemler için kullanılan programlama dillerinde bu ölçülere daha çok dikkat edilmelidir. Ağ tabanlı uygulamaların masaüstü uygulamalarından en önemli farkı aynı anda farklı yerlerden bir çok kullanıcı tarafından çalıştırılacak olmalarıdır. Bu durumda yapılan bir fazla zaman yada sistem kaynağı kullanımı daha çok etkisini gösterecektir.

Bu yazıda PHP ile program/betik yazarken daha iyi bir performans için dikkat edilebilecek bazı ayrıntılardan bahsedeceğim.

Yazdığınız kodları performans açısından değerlendirirken dikkat etmeniz gereken üç temel konu vardır;

1) Kullandığınız dilin (Yazıda PHP kullanılacaktır) araçları

2) Sistem kaynaklarının kullanımı (hafıza (memory) kullanımı, sabit diskten okuma)

3) Veritabanı kullanımı

Şimdi sırayla bu başlıklara değinelim.

1) Kullandığınız dilin araçları : Programlama dilleri program yazarken kullanmanız için bir sürü fonksiyon (echo(), substr() ) ve araçlar (if,while, for) sağlarlar. Bu araçların kullanım amaçları farklı farklıdır. Aynı işi farklı araçlar kullanarak farklı yollarla yapabilirsiniz. Her farklı yolun harcadığı zaman farklıdır. Burada zamandan kastımız kodun çalıştırılırken (PHP motoru tarafından) harcadığı zamandır. İki farklı yolun ne kadar zaman harcadığını basitce basinda ve sonunda zamanı microtime() kullanarak yazdırıp görebilirsiniz. Daha ayrıntılı ve detaylı bilgiyi Benchmark (PEAR), DBG, Xdebug veya Advanced PHPDebugger kullanarak elde edebilirsiniz. Bu konumuzun biraz dışında :-) .

Şimdi PHP araçları kullanırken dikkat edebileceğimiz ufak ayrıntıları listelemeye başlayalım.

Aynı işi birkaç defa yapmamak : Aynı işlemi aynı sonucu verecekse tekrar yapmak zaman kaybıdır. Kod yazarken örneğin bugünün tarihi betiğin birkaç yerinde yazdırmamız gerekiyorsa hesaplamayı en başta yapıp bir değişkene atıp sonra bunu kullanmak işlem sayısını azaltacaktır.

Karar mekanizmaları (if) gerektiği kadar kullanmak : Kara mekanizmaları normal işlemlerden (toplama,çıkarma,eşitleme gibi) daha çok zaman aldığı için çok fazla kullanmak doğru değildir. Örneğin aynı şarta bağlı işlemleri bir araya toplamanız daha doğru olacaktır.

Döngüleri (for, while ...) doğru kullanmak : Döngüler de karar mekanizmaları gibi normal işlemlerden daha çok vakit alırlar çünkü her işlem sırasında döngü şartını kontrol ederler. Basit bir örnek vermek gerekirse 3 defa çalışacağını bildiğimiz bir döngü gereksizdir. Onun yerine direk olarak işlemi üç defa yazmamız daha doğrudur. Eğer bir döngünün kesin olarak kaç defa çalışacağını biliyorsak direk olarak işlemeleri yazmamız bize hız kazandıracaktır. Dögüleri kullanırken sık yapılan hatalardan biri de kontrol şartlarında aynı işlemi sürekli yaptırmaktır. Genel olarak döngülerde dizi (array) kullanırken döngüyü dizi sayısı kadar döndürürüz (for($i=0;$i<count($dizi);$i++)). Sayıyı bir kere hesaplayıp kullanmak yada foreach() dögüsünü kullanmak doğru olacaktır.

Echo veya print kullanmak: PHP geliştiricileri echo 'nun print ten daha hızlı olduğunu belirtiyorlar (bakınız Kaynak 1). Sonuç yazdırken echo kullanmak daha doğru olacaktır.

String türünde değişkenleri tek yada çift tırnak kullanmak : Tek tırnak kullandığınız zaman PHP motoru değişkeni formatsız olarak kabul eder ve hiçbir kontrol yapmaz. Yani tek tırnak kullandığınız değişkenlerde \n gibi özel karakterler ve değişkenler kullanamazsınız. Tek tırnaklı string'de kontrol yapılmadığı için hızlı çalıştığından eğer başka değişken kulllanmayacaksanız ve özel karakter kullanmayacaksanız tek tırnak kullanmanız daha doğrudur.

Dosya çağırmak (include) : Program yazarken dosya çağırmaya ihtiyaç duyduğunuzda include,require,include_once veya require_once kullanırsınız. Require ile include fonksiyonlarinin tek farkı dosya bulunumayınca include uyarı require hata verir. '_once' li fonksiyonlar ise dosyanin daha once çağırılıp çağırılmadığını kontrol eder. Çağrılmışsa yeniden çağırmaz. Eğer bir dosyayı birden fazla çağırma ihtimali yoksa '_once' olmayan fonksiyonları kullanmanız daha doğrudur.

2)Sistem kaynaklarının kullanımı (hafıza (memory) kullanımı, sabit diskten okuma) : Bütün programlamlar çalışırken kullandığınız değişkenleri hafızada tutar. Hafızayı mümkün olduğu kadar az kullanmak için gereksiz değişkenler kullanılmamalıdır.


Bir başka dikkat edilmesi gereken konu ise dosya okuma işlemleridir. Dosya okumanız gerektiğinde fscanf gibi paramatre alan fonksiyonların yerine dosyayı satır satır okuyup PHP string parçalama fonksiyonlarını kullanmanız daha doğrudur.

Dosya okuma işi sırasında dikkat edilmesi gereken başka bir konu ise dosyaların okuma işlemi bittikten sonra kapatılmasıdır (fclose() ).

3)Veritabanı kullanımı : Veritabanı kullanan uygulamalar yaparken yaptığınız bağlantı ve sorgu sayısı uygulamanın hızını doğrudan etkiler. Dikkat edilmesi gereken noktaları şöyle sıralayabiliriz.

Bağlantı : Gerektiğinde veritabanına bağlanılmalı ve işlem bittikten sonra bağlantı kapatılmalıdır.

Tasarım : Uygulamanız için veritabanı oluştururken yapacağınız tasarım hataları uygulamınızın hızını etkiler. (Bu konu başlı başına bir makale konusu olabileceğinden ve bu makalenin konu sınırını aşacağından burda biraz kısa anlatılacaktır.).

Tablo oluştururken alanların birbirinden bağımsız olamsına dikkat edilmelidir (normalization). Yani eğer bir tablonun bir özelliği başka bir özellik kullanırak bulunabiliyorsa yani bağımlı ise bu özelliği alan olarak tabloda belirtmeye gerek yoktur.

Aynı özellikte bilgiler için tek tablo oluşturulmalıdır.

Sorgu: Sorgu cümlesi iyi oluşturulmalı ve istenilen sonuçların her zaman doğru olarak döndürüldüğü kontrol edilmelidir.

Veritabanının kolayca yaptığı (count,rand,limit,date,order vb) işlemler veritabanına yaptırılmalıdır. Sorgu sayısı mümkün olduğu kadar azaltılmalıdır. Bunun için sorgu işlemleri farklı modüllere bölünebilir.

Sorguda sadece gerekli alanlar çekilmelidir ve 'select *' kullanımından kaçınılmalıdır.

Veritabanına veri girişi yaparken yapılan kontrolleri mümkün olduğu kadar veri tabanına yapmasını sağlamak. Veri tutarlığını çok özel durumlar olmadığı sürece veritabanı araçlarıyla sağlamak (trigger). Veritabanları bu işlemleri yapmak için tasarlandığı için sizin yazacağınız programlardan çok daha hızlı ve kolayca bu işlemleri hallederler. Unutmayalımki veritabanları sadece veri depolamak için değil veriyi kolay işlemek için kullanılmak içindir.

Genel olarak PHP ile kod yazarken dikkat edebileceğiniz bazı inceliklerden bahsetmeye çalıştık. Bu liste daha da genişletilebilir.

Şimdilik bu kadar teşekkürler iyi çalışmalar.


Kaynakça

1) http://tr2.php.net/manual/en/function.echo.php

2) www.php.net

3) www.phpbuilder.com

Umut IŞIK


Not: Bu yazı http://www.php.org.tr adresinden bir alıntıdır.
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder E-posta gönder Yazarın web sitesini ziyaret et Yahoo Messenger MSN Messenger
Bu Site Google Adsense ile Gelir Elde Ediyor









Tarih: 2024-04-20, 07:58:10    Mesaj konusu: Forum Arası Reklamlar


Başa dön
mersoy
Mesaj: 1000+
Mesaj: 1000+





Kayıt: Dec 08, 2007
Mesajlar: 2316

MesajTarih: 2008-06-07, 09:07:49    Mesaj konusu: Alıntıyla Cevap Gönder

araştırınca şu netopsiyon'da neler çıkıyor. Güzel bir yazı teşekkür ederim.
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder Yazarın web sitesini ziyaret et
artistbaron
Mesaj: 1000+
Mesaj: 1000+





Kayıt: Dec 09, 2006
Mesajlar: 2993

MesajTarih: 2008-06-07, 11:21:30    Mesaj konusu: Alıntıyla Cevap Gönder

Utku abi netopsiyonun kurucularından biridir yani burayı açan iki kişiden biri....de bakma değeri bilinmedi.....
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder
Aliosman
Teknik Yönetici
Teknik Yönetici





Kayıt: Jul 20, 2002
Mesajlar: 3836
Konum: Balıkesir

MesajTarih: 2008-06-07, 11:24:44    Mesaj konusu: Alıntıyla Cevap Gönder

artistbaron :
Utku abi netopsiyonun kurucularından biridir yani burayı açan iki kişiden biri....de bakma değeri bilinmedi.....


Hayır artist yanlış biliyorsun. netopsiyonu ilk açanların arasında Utku yoktu. Netopsiyon ilk açılışta 15 kişilik bilgisayar meraklısı 8 bayan 7 erkek olan bir ekip tarafından açıldı.
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder Yazarın web sitesini ziyaret et
polibo06
Site Yöneticisi
Site Yöneticisi





Kayıt: Nov 01, 2006
Mesajlar: 2412
Konum: izmirimi özledim

MesajTarih: 2008-06-07, 13:38:57    Mesaj konusu: Alıntıyla Cevap Gönder

siz yazıyı yazan kişinin hayat hikayesini araştıracağınıza yazıyı okuyun..süper bir yazı hepsini okudum herkesinde okumasını şiddetle öneriyorum
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder Yazarın web sitesini ziyaret et
Önceki mesajları göster:   
Bu forum kilitlendi: mesaj gönderemez, cevap yazamaz ya da başlıkları değiştiremezsiniz   Bu başlık kilitlendi: mesajları değiştiremez ya da cevap yazamazsınız    Netopsiyon Online Forum Ana Sayfa -> PHP Tüm zamanlar GMT + 3 Saat
1. sayfa (Toplam 1 sayfa)

 
Geçiş Yap:  
Bu forumda yeni başlıklar açamazsınız
Bu forumdaki başlıklara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız

Benzer Konular

Başlık Yazar Forum Cevaplar Tarih
Yeni mesaj yok news modulunde yorum yazarken cikan g... oktay59 Php-Nuke 2 2008-06-09, 22:23:04 Son Mesajı Görüntüle
Yeni mesaj yok Php-Nuke 7.9'da SQL'ye Yazarken Türkç... Balaban Php-Nuke 6 2006-07-13, 17:19:34 Son Mesajı Görüntüle
Yeni mesaj yok bb code box editörünü haber yazarken ... silent_sinner Php-Nuke 0 2005-11-12, 12:32:48 Son Mesajı Görüntüle
Yeni mesaj yok Forumda yazı yazarken <br> ve &... surviox Php-Nuke 2 2005-10-13, 22:11:02 Son Mesajı Görüntüle
Yeni mesaj yok cevap yazarken orjinal mesaj önizleme... silent_sinner Php-Nuke 2 2005-09-19, 19:50:20 Son Mesajı Görüntüle

Copyright © 2002-2024 Netopsiyon Bilişim Teknolojileri San. Tic. Ltd.Şti. - Bütün hakları saklıdır!
Bu site Netopsiyon.com.tr Sunucularında Barındırılmaktadır.
Netopsiyon Bilişim Teknolojileri San. Tic. Ltd.Şti. Netopsiyon Copyright