Şu şekilde bir senaryo izleyebilirsiniz hocam;
Yapınız nasıl tam bilmesemde, vereceğim örnekte yapı şu şekilde olacak:
Bir api kullanıyorum ve verileri çekmek için bu apiye "id" adında bir post atıyorum. Bu apide bana geri dönüş olarak ad,soyad,yaş,telefon şeklinde verilerle json çıktısı veriyor. Bense 100.000 kişinin id bilgisine sahibim. api adresim:
myapi.com/id_api.php benim sitem
vindicta.com ve api işlemlerimi
vindicta.com/api_post.php adresinde yapıyorum. api_post.php adresinde dönen işlemde şu;
myapi.com/id_api.php adresine id adında post gönderdikten sonra dönen çıktıdaki bilgileri veritabanına insert ediyorum. Yani api_post.php adresine id adında bir post geldiğinde, bu post verisini alarak apiye post gönderiyorum.
Buraya kadar gayet güzel. Ortak sorunumuz şu ki: 100.000 adet istek göndereceğim.
$id_data = array(
"3","5","12",79"....,"96532"...,"106598"
);
Üstteki değişkeni sürekli kullanacağım için üstte dursun. $id_data dizisinde 100k veri var (varsayalım yani

).
api_post.php sayfamda şu şekilde bir kod kullandığımı varsayalım:
<?php
/* api_post.php {5xx hatalarına yol açan versiyon} */
foreach ( $id_data as $id ) {
// her döngüde öncelikle curl işlemleri çalıştırıyorum, idleri post olarak gönderiyorum ve çıktıları kullanarak crud işlemleri yapıyorum var sayalım bu kod bloğunda
}
?>İyi güzel, 10 tanesi tamamlandı, 20si tamamlandı.. sonrasında sunucumuz isteklere cevap veremedi 5xx hatamızı yedik ve bir süreliğine göçtü.
Bu şekilde bir durumunuz olduğunu varsayıyorum. Şu şekilde bir işlem yapmaya karar veriyorum; öncelikle bir ajax_request.php adında bir dosya oluşturuyorum.
<?php
/* ajax_request.php */
$count = 0;
foreach ( $id_data as $id ) {
$count += 10000;
?>
setTimeout(function(){
$.ajax({
url: "http://vindicta.com/api_post.php",
type: "post",
data: {"id":<?=$id?>}
});
}, <?=$count;?>);
<?php } ?>üstteki ajax_request.php dosyamız api_post.php dosyasına id adında post gönderecek 10 saniyede bir, farklı idlerle. (array içindeki idleri yani)
<?php
/* api_post.php {tekil işlem yapan hali} */
if ( isset ( $_POST["id"] ) ) {
//curl ile bağlandık varsayalım, postfields true olarak ayarladık ve post data olarak post[id] verimizi id olarak apiye gönderdik. çıktımızı json_decode ile object olarak aldık. çıktımızın adı $output; olsun.
// $output->ad , $output->soyad vs. olarak erişimimizi sağlıyoruz varsayalım. sonrasındada veritabanıma gerekli bilgileri gönderiyorum.
/*
$sql = "INSERT INTO users (ad, soyad, yas) VALUES ($output->ad,$output->soyad,$output->yas)";
$pdo->prepare($sql)->execute($data);
gibisinden.
*/
} else {
die();
}
?>Bu şekilde bir yapı kullanabilirsiniz hocam. Herhangi bir sonuca ulaşamazsanız teamviewer ile yardımcı olmaya çalışırım.