• 04-09-2017, 16:13:35
    #1
    Merhaba arkadaşlar,

    Sorunum şöyle bir bildiri sistemim var ve yeni içerik eklenildiğinde onu takip eden kullanıcılara bildiri gönderebilmesi için veritabanına yazdırıyorum. O içeriği takip eden üye sayısı yüksek olduğunda yeri geldiği zaman 4000 bin insert işlemini birden yapıyor. Bu da tabi ki anlık olarak veritabanını çok zorluyor. Bunu adım adım yani 200/4000 400/4000 gibi yapabilme şansımız var mı? Çoğu scriptte bulunuyor ama bu sistemin adı nedir acaba O.o
  • 04-09-2017, 16:25:01
    #2
    Yazılım size ait ise, sayfalama mantığında yaparak her X kayıtta bir tekrar kaldığı yerden tekrar devam ettirebilirsiniz.

    Örnek,

    Count = 5000
    for($i=0;$i<Count; $i++){

    if($i==X){
    sleep(10); // 10 saniye bekletir

    }

    }
  • 04-09-2017, 17:12:06
    #3
    PiEycPi adlı üyeden alıntı: mesajı görüntüle
    Yazılım size ait ise, sayfalama mantığında yaparak her X kayıtta bir tekrar kaldığı yerden tekrar devam ettirebilirsiniz.

    Örnek,

    Count = 5000
    for($i=0;$i<Count; $i++){

    if($i==X){
    sleep(10); // 10 saniye bekletir

    }

    }

    foreach($whoBookmark as $one){
    usleep(10000);
    $db->Create(APP_TABLES_PREFIX . 'manga_notification', array('user'=>$one['user'], 'type'=>'info', 'url'=> $lang['manga_slug'].'-'.$_POST['manga'].'.html', 'message'=>sprintf($lang['New-chapter'], $mid1, $chapter)));
    }

    yaparsak işlem öncesi hep saniyenin 100/1 bekletir mi acaba O.o
  • 26-10-2017, 20:21:23
    #4
    Arkadaşlar hala yardım aranmaktadır. Bu özellik ne diye geçiyor olabilir. Nasıl araştıracağımı bilmedim, bulamadım bir örnek.
  • 26-10-2017, 23:43:20
    #5
    Selam Emre,
    Bu konuda aklıma gelenler doğrultusunda yapabileceklerin :
    • Mysql multiinsert'i araştır bir nebze de olsa performans artışı sağlarsın
    • Bir diğer yöntem de şu önce kaç kişiye göndereceğinin adedini bul. Atıyorum 4000, sonra bunu atıyorum 10 10 insert edelim, 4000 / 10 = 400 kez insert yapmamız gerek.
    $toplam_uye = 4000;
    $kac_kac = 10;
    $kac_kez = $toplam_uye / $kac_kac;
     for($i=1;$i<$kac_kez+1;$i++){
    //önce üyeleri select ve $kac_kac a göre limitlersin ki ram şişmesin
    //sonra da $kac_kac a göre gelen üyeleri gruplayıp multiinsert ile insert edersin. Böylece işlem peşisıra yapılsa bile rami  ve işlemciyi çok fazla yemez.
    }