Foreach İle XML Okumanın Parçalanması ve Timeout Hatası
Merhabalar,
XML okuma yapıp veritabanına kayıt yaptığım bir kod dosyam mevcut.
Foreach döngüsü ile xml'deki tüm itemleri tek tek okumaktayım ve foreach döngüm şu şekilde;
foreach($xmlurl as $key => $xml){
// işlemler
}
bu şekilde tüm itemleri tek tek okuyup işlem yapıyorum ancak xml'deki item sayısı arttığından dolayı timeout hatası almaktayım. Test döngü sayısını alttaki gibi sınırladım.
foreach($xmlurl as $key => $xml){
$counter++;
if ($counter >= 1000) {
break;
}
// işlemler
}
Burada tespitim şudur; 1000 item okumaya kadar sorun yaşamıyorum ama 1200-1300 e çıkardığımda timeout hatası alıyorum. Hosting firması max_execution_time 'ı 3000 'e çıakrdı ancak çözüm olmadı.
Çözüm olarak şunu yapmak istiyorum. Foreach döngüsü ilk 1000 item'i okuduktan sonra tekrar kalan 1000 itemi okumasını bu sayede timeout 'u atlatacağımı düşünüyorum.
Bunu nasıl yapabilirim ya da farklı çözüm önerileriniz var ise aydınlatabilir misiniz ?
Aldığım Hata :
Request Timeout
This request takes too long to process, it is timed out by the server. If it should not be timed out, please contact administrator of this web site to increase 'Connection Timeout'.
Yaptığı testlerde xml 'i okumanın timeout hatasına sebep vermediği veritabanı kayıt işlemlerinin buna neden olduğunu tespit ettim. XML 'den verilerin okunması 1 saniyenin altında sürüyor ancak veritabanına kayıt uzun sürüyor.
bunu aşabilmek için transaksiyon fonksyionu kullanarak güncellemeleri toplu yaptım ancak genede çözüm olmadı.