Yaptığım Deneysel İşlem Ve Çözüm Arayışları
-
olay şu sırf merakımdan dolayı ve ilerde ne tür sorunlar ile yüzleşebilceğimle ilgili bilgi edinmek açısından bir şey denemim biraz önce ki şimdiden çözüm yollarını düşüneyim ki yeni projem daha yayın hayatına geçmeden önce bile veri tabanımda kayıtlı 40 bin veri bulunmakta projenin kodlaması bitti ancak icerik eklemekteyim suaralar :) olaya gelicek olursak veri tabanı olusturdum ve bunda bir tablo deneme adında buna sadece 3 stun ekledim id aciklama durum. id kisim A_I int ,aciklama kısmı longtext durum kısmı int . ondan sonra for döngüsü olusturdum
döngümü yazayım hatta :Dfor ( $say=1 ; $say < 99999999999999999 ; $say++ )
ve inster into ile kayıt ekledim doğal olarak bu döngü sayısı kadar kaydımı ekledi sonra bu verileri sayfalama yöntemi ile listeleteyim dedim abartısız söylüyorum sayfanın yüklenmesi 29 sn sürdü :D ilerisi için ne gibi yöntemler alınabilir bu performans konusu hakkında bildiğiniz kaynakları paylaşırsanız sevinirim -
Upla yarim tez upla :d
-
Verilerin hepsini neden ayni anda cekiyorsun grup grup cek veya tek sayfayi cek
-
Sayfanın her yüklenmesinde tablodaki bütün kayıtları çekip, daha sonra işine yarayanları gösterirsen 29 saniye de sürer 1 dakika da.
Örneğin bir sayfada 30 kayıt göstereceksen, sadece 30 kayıt çekersin database'den böylece çooook daha kısa sürece açılır sayfan.
-
sayfalama yöntemini paylaş hocam bakalım
-
sayfalama yöntemim buyurun
<?php $sayfada = 15; // sayfada gösterilecek içerik miktarını belirtiyoruz. $sorgu = mysql_query("SELECT COUNT(*) AS toplam FROM sorular where kid='$katid'"); $sonuc = mysql_fetch_assoc($sorgu); $toplam_icerik = $sonuc['toplam']; $toplam_sayfa = ceil($toplam_icerik / $sayfada); // eğer sayfa girilmemişse 1 varsayalım. $sayfa = @sqltemizle(isset($_GET['sayfa'])) ? (int) @sqltemizle($_GET['sayfa']) : 1; // eğer 1'den küçük bir sayfa sayısı girildiyse 1 yapalım. if($sayfa < 1) $sayfa = 1; // toplam sayfa sayımızdan fazla yazılırsa en son sayfayı varsayalım. if($sayfa > $toplam_sayfa) $sayfa = $toplam_sayfa; // kaçıncı içerikten başlanacağını ifade edecek limit değeri. $limit = ($sayfa - 1) * $sayfada; $sorgu = mysql_query('SELECT * FROM sorular where kid="'.$katid.'" order by id desc LIMIT ' . $limit . ', ' . $sayfada); while($icerik = mysql_fetch_assoc($sorgu)) { $kidisi=$icerik['id']; $sorutopla=mysql_query("Select * from cevaplar where kid='$kidisi'"); $ksay=mysql_num_rows($sorutopla); ?> <div class="soru"> <div class="postRight"> <div> <h3><?php echo $ksay;?></h3> <span>Cevap</span> </div> <div> <h3><?php echo $icerik['hit'];?></h3> <span>Okunma</span> </div> </div> <div class="soru2"> <h5 class="soruBaslik"><a href="/soruoku/<?php echo degistir($icerik['baslik']); ?>/<?php echo $icerik['id'];?>" title=""><?php echo $icerik['baslik'];?></a></h5> <div class="soruAlt"> <span class="soruZaman sz4"><span class="soruZaman sz2"><?php echo $icerik['tarih'];?> 'de</span></span> - <span class="soruSoran"><?php echo $icerik['kadi'];?> sordu.</span> </div> </div></div><?php } ?> <!-- liste--> <!-- Sayfalama --> <div class="sayfalama tr"> <?php // yukarıdan geldiği varsayılan değişkenler: // $toplam_sayfa ve $sayfa $sayfa_goster = 11; // gösterilecek sayfa sayısı $en_az_orta = ceil($sayfa_goster/2); $en_fazla_orta = ($toplam_sayfa+1) - $en_az_orta; $sayfa_orta = $sayfa; if($sayfa_orta < $en_az_orta) $sayfa_orta = $en_az_orta; if($sayfa_orta > $en_fazla_orta) $sayfa_orta = $en_fazla_orta; $sol_sayfalar = round($sayfa_orta - (($sayfa_goster-1) / 2)); $sag_sayfalar = round((($sayfa_goster-1) / 2) + $sayfa_orta); if($sol_sayfalar < 1) $sol_sayfalar = 1; if($sag_sayfalar > $toplam_sayfa) $sag_sayfalar = $toplam_sayfa; if($sayfa != 1) echo '<a href="/sorular/'.$katbaslik.'/'.$katid.'/1"><<İlk sayfa</a>'; if($sayfa != 1) echo ' <a href="/sorular/'.$katbaslik.'/'.$katid.'/'.($sayfa-1).'"><Önceki</a> '; for($s = $sol_sayfalar; $s <= $sag_sayfalar; $s++) { if($sayfa == $s) { echo '[' . $s . '] '; } else { echo '<a href="/sorular/'.$katbaslik.'/'.$katid.'/'.$s.'">'.$s.'</a> '; } } if($sayfa != $toplam_sayfa) echo ' <a href="/sorular/'.$katbaslik.'/'.$katid.'/'.($sayfa+1).'">Sonraki></a> '; if($sayfa != $toplam_sayfa) echo ' <a href="/sorular/'.$katbaslik.'/'.$katid.'/'.$toplam_sayfa.'">Son sayfa>></a>'; ?> -
not: belkide localhostta böyle yavaş sürüyoda olabilir
yukarıda kullandığım sayfalama yöntemini herzaman kullanırım bahsettiğim deneme işindede aynı mantığı kullandım
arkinfes tarafından 01/Eki/14 12:50 tarihinde düzenlenmiştir -
hocam sorgularındaki kid alanını int yap
acemi-webci tarafından 01/Eki/14 17:27 tarihinde düzenlenmiştir
edit: 99.999.999.999.999.999 adet veri var diyorsun, bu kadar dolu tablodan verim almak zor olacak ama -
acemi-webci bunu yazdı
hocam sorgularındaki kid alanını int yap
edit: 99.999.999.999.999.999 adet veri var diyorsun, bu kadar dolu tablodan verim almak zor olacak amahocam olay şu benim yazdığım sorguda yavaş phpmyadminden anında listeleniyor acaba phpmyadminin classınımı kullansam dicem onu nasıl becericem
