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?
Php optimizasyon için kullanılan yöntemler
15
●431
- 24-04-2021, 08:55:28Kimlik doğrulama veya yönetimden onay bekliyor.
- 24-04-2021, 09:05:34daha anlaşılır bir kaynak var mı hocam?Omerfd adlı üyeden alıntı: mesajı görüntüle
- 24-04-2021, 09:16:27php.net den daha anlaşılırı sanmıyorum yoktur stackoverflow ada bakınbuddy adlı üyeden alıntı: mesajı görüntüle
- 24-04-2021, 09:26:57Ben nasıl yapıyorum:buddy adlı üyeden alıntı: mesajı görüntüle
- 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.
- 24-04-2021, 09:45:15iş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 - 24-04-2021, 10:12:32Merhaba 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:42bir 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?WRaNGLeR adlı üyeden alıntı: mesajı görüntüle