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
Veritabanına girilen verileri adım adım yaptırmak ?
4
●428
- 04-09-2017, 17:12:06PiEycPi adlı üyeden alıntı: mesajı görüntüle
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, 23:43:20Selam 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. }