• 24-04-2021, 08:51:54
    #1
    Hocalarım, php'de bir sayfadaki sorgunun ne kadar sürdüğünü ne kadar bellek vs harcadığını sayfa yüklenmesi bittiğinde nasıl görebiliriz?

    Bu ve benzeri optimizasyon fikirleri için neler kullanıyorsunuz? Önerileriniz nedir?
  • 24-04-2021, 08:55:28
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    https://www.php.net/manual/en/functi...-get-usage.php
  • 24-04-2021, 09:05:34
    #3
    daha anlaşılır bir kaynak var mı hocam?
  • 24-04-2021, 09:16:27
    #4
    buddy adlı üyeden alıntı: mesajı görüntüle
    daha anlaşılır bir kaynak var mı hocam?
    php.net den daha anlaşılırı sanmıyorum yoktur stackoverflow ada bakın
  • 24-04-2021, 09:26:57
    #5
    buddy adlı üyeden alıntı: mesajı görüntüle
    Hocalarım, php'de bir sayfadaki sorgunun ne kadar sürdüğünü ne kadar bellek vs harcadığını sayfa yüklenmesi bittiğinde nasıl görebiliriz?

    Bu ve benzeri optimizasyon fikirleri için neler kullanıyorsunuz? Önerileriniz nedir?
    Ben nasıl yapıyorum:
    • Sorgu süresini PHPMyAdmin üzerinden kontrol ediyorum. Sorguyu oraya yapıştırıyorum ve kaç saniyede sonuçlandığına bakıyorum. Eğer burada süre sayfanın yüklenme hızı ile alakasız ise diğer kodlarda sorun var demektir
    • Sadece gerekli sütunları alıyorum. Gereğinden fazla sütun almak zaten ek yük oluşturur
    • Veritabanı tablolarının indexlerini kullanıyorum. Gerekmedikçe "like" aramaları yapmıyorum, gerek duyacak şekilde verilerimi kaydetmiyor, raporları hazırlamıyorum
    • Veritabanından aynı verileri sürekli çekme gibi birşey var ise onun yerine "dip toplam" tablosu alıyorum. Örneğin X tarihinde Y verisinin durum neydi? gibi bir soru var ise, bu soruyu cevaplamak için istenen verileri başka bir tabloda tek satır olarak kaydediyorum. Muhasebe yazılımlarının genel olarak yaptığı budur, sürekli hesaplama yapılsa o program çalışmaz. Verileri değiştirilemez ve istenildiğinde hızlıca ulaşılacak şekilde kaydederler.
    • Var sayalım 10000 ürün içeren bir tablonun tüm ürünlerini alacağız. Bu durumda sorgumuzda join yada "select (select ....)" gibi iç içe sorgu yazmıyorum. Onun yerine kategori tablosunu ayrıca çekip ayı bir parametrede saklıyorum. Şöyle örnekleyeyim. Araç kiralama firmasında çalışıyorum ve 80 çeşit aracımız var. Günlük işlenen rezervasyon sayısı 1000 civarı var sayalım. İç içe sorgu yada join gibi bir yaklaşımda 1000 satırla beraber 80 satırı her sonuç için tekrar sorgulamam gerekebilir. Onun yerine 80 satırın tümünü alıyorum ve 1000 satırı listelerken dizi indislerini kullanıyorum (Ör: $arac[$rezervasyon['arac_id']]['aracadi'] gibi ). Böyle anlatınca çok ciddi birşey değil gibi durabilir, ancak zaten araç tiplerini başka bir amaç ile çekmiş oluyorum, ek olarak sorguya yazmama gerek kalmıyor.
    • Bir döngüde yapabileceğim işleri en yüksek seviyeye getirmeye çalışıyorum. Aynı veriyi 2 defa foreach'e sokmam performansı düşürecektir. Yine de tekrar döngüye girmesi gerekiyorsa en minimal hali ile yapıyorum.
    • Döngülerde IF ve switch gibi karar fonksyonlarını kullanmakta çekingen davranıyorum, filtreleme yapmam gerekiyorsa bunları veritabanında yapmaya çalışıyorum.
    • PHP çekirdek fonksyonlarını kullanıyorum.
    Sanırım yeterli
  • 24-04-2021, 09:45:15
    #6
    işte aradığım cevaplar like bile yetersiz kalır deneyiminizi paylaşmanıza. daha sonra size yine bu konuyla ilgili danışabilir miyim?
    TheKhan adlı üyeden alıntı: mesajı görüntüle
    Ben nasıl yapıyorum:
    • Sorgu süresini PHPMyAdmin üzerinden kontrol ediyorum. Sorguyu oraya yapıştırıyorum ve kaç saniyede sonuçlandığına bakıyorum. Eğer burada süre sayfanın yüklenme hızı ile alakasız ise diğer kodlarda sorun var demektir
    • Sadece gerekli sütunları alıyorum. Gereğinden fazla sütun almak zaten ek yük oluşturur
    • Veritabanı tablolarının indexlerini kullanıyorum. Gerekmedikçe "like" aramaları yapmıyorum, gerek duyacak şekilde verilerimi kaydetmiyor, raporları hazırlamıyorum
    • Veritabanından aynı verileri sürekli çekme gibi birşey var ise onun yerine "dip toplam" tablosu alıyorum. Örneğin X tarihinde Y verisinin durum neydi? gibi bir soru var ise, bu soruyu cevaplamak için istenen verileri başka bir tabloda tek satır olarak kaydediyorum. Muhasebe yazılımlarının genel olarak yaptığı budur, sürekli hesaplama yapılsa o program çalışmaz. Verileri değiştirilemez ve istenildiğinde hızlıca ulaşılacak şekilde kaydederler.
    • Var sayalım 10000 ürün içeren bir tablonun tüm ürünlerini alacağız. Bu durumda sorgumuzda join yada "select (select ....)" gibi iç içe sorgu yazmıyorum. Onun yerine kategori tablosunu ayrıca çekip ayı bir parametrede saklıyorum. Şöyle örnekleyeyim. Araç kiralama firmasında çalışıyorum ve 80 çeşit aracımız var. Günlük işlenen rezervasyon sayısı 1000 civarı var sayalım. İç içe sorgu yada join gibi bir yaklaşımda 1000 satırla beraber 80 satırı her sonuç için tekrar sorgulamam gerekebilir. Onun yerine 80 satırın tümünü alıyorum ve 1000 satırı listelerken dizi indislerini kullanıyorum (Ör: $arac[$rezervasyon['arac_id']]['aracadi'] gibi ). Böyle anlatınca çok ciddi birşey değil gibi durabilir, ancak zaten araç tiplerini başka bir amaç ile çekmiş oluyorum, ek olarak sorguya yazmama gerek kalmıyor.
    • Bir döngüde yapabileceğim işleri en yüksek seviyeye getirmeye çalışıyorum. Aynı veriyi 2 defa foreach'e sokmam performansı düşürecektir. Yine de tekrar döngüye girmesi gerekiyorsa en minimal hali ile yapıyorum.
    • Döngülerde IF ve switch gibi karar fonksyonlarını kullanmakta çekingen davranıyorum, filtreleme yapmam gerekiyorsa bunları veritabanında yapmaya çalışıyorum.
    • PHP çekirdek fonksyonlarını kullanıyorum.
    Sanırım yeterli
  • 24-04-2021, 09:49:44
    #7
    Tabii ki,. Ancak foruma yazmanız daha uygun olacaktır. Bu sayede başka arkadaşlarda yardımcı olabilirler.
  • 24-04-2021, 10:12:32
    #8
    Merhaba TheKhan arkadaşımızın dediklerine ek olarak karmaşık benzer sorguyu ufak farklarla defalarca kullandığınız durum oluyorsa örnek istatistik sorguda filtreleme yapıp birden fazla sorgu çalıştırmak yerine filtreleme yapmadan tek sorguda tüm veriyi çekip aynı veriyi phpde filtreleyerek tüm işlemler için tek veri kullanabilirisiniz veriçekme süresi oldukça düşecektir
  • 24-04-2021, 10:35:42
    #9
    WRaNGLeR adlı üyeden alıntı: mesajı görüntüle
    Merhaba TheKhan arkadaşımızın dediklerine ek olarak karmaşık benzer sorguyu ufak farklarla defalarca kullandığınız durum oluyorsa örnek istatistik sorguda filtreleme yapıp birden fazla sorgu çalıştırmak yerine filtreleme yapmadan tek sorguda tüm veriyi çekip aynı veriyi phpde filtreleyerek tüm işlemler için tek veri kullanabilirisiniz veriçekme süresi oldukça düşecektir
    bir tablodaki kullanacağımız tüm veriyi çektik diyelim hocam tek bir sorguyla. Daha sonra buradan çekilen verileri başka kısımları ayrı sorgu yapmadan php ile daha önce çekilen veriyi filtrele diyorsunuz doğru mu anladım. Bunun için sorgusuz filtreleme nasıl yapabiliriz kod örneği verebilir misniz?