PHP Curl - Eksik Veri Çekme Sorunu
-
Hocalar merhabalar. Bir siteden Curl kullanarak son 10 yıla ait büyükçe bir veri çekiyorum. Botum döngümü küçük bir kısım için döndürdüğümde eksiksiz şekilde veri alabiliyorum fakat 10 yılın tamamını bir anda çekmeye çalıştığımda eksik veriler oluyor, verilerin tamamı eksiksiz şekilde database e aktarılmıyor. Çektiğim verinin büyük boyutlu olmasından kaynaklandığını düşündüğümden kodu paylaşmıyorum, çünkü dediğim gibi küçük döngüler yaptığımda kod kusursuz çalışıyor. Bu genel bir sorun mudur? Eğer öyleyse çözüm yolları nelerdir? Şimdiden teşekkür ediyorum.
-
hocam paylaşmadığın sürece kimse net bir cevap veremez. belki sen hatanı görmüyor olabilirsin ama curl konusunda daha iyi olan birisi hatanı söyleyebilir.
-
TheKorsans bunu yazdı
hocam paylaşmadığın sürece kimse net bir cevap veremez. belki sen hatanı görmüyor olabilirsin ama curl konusunda daha iyi olan birisi hatanı söyleyebilir.
hocam dediğim gibi kod 1 yıl için çalıştırdığımda doğru şekilde çalışıyor, 10 yıl için yaptığımda bazı verileri tam bazılarını eksik çekiyor. Dolayısıyla kodda sıkıntı olduğunu zannetmiyorum. Büyük verilerde çalışırken bu tarz genel bir sorun olup olmadığıydı benim merak ettiğim.
-
timeout değerini sıfırlamayı dene? ya da veriyi bölerek çekmeye çalış
1-2 yıl arası
2-3 yıl arası
3-4 yıl arası
... gibi
-
pSkpt bunu yazdı
timeout değerini sıfırlamayı dene? ya da veriyi bölerek çekmeye çalış
1-2 yıl arası
2-3 yıl arası
3-4 yıl arası
... gibi
evet hocam şuan bölünmüş şekilde çalışıyorum zaten, ama beni epey yavaşlatıyor bu olay. Timeout 0 yapmayı bi deniyim, o şekilde eğer bağlantı koparsa bağlantı gelene kadar bekliyor değil mi yanlış bilmiyorum
-
Hocam anlamadığım 10 yıllık veriyi nasıl aynı anda çekiyorsun.? Çektiğin yerde tek sayfada 10 yıllık veri mi tutuluyor. Bunu yapmış olmaları saçma geldi. Bi ikinci belki bunu yanlış anlamış olabilirim yani veriler tek sayfada değildir. O zaman curl döngüsünü zaten sürekli döndürmen gerekecek bu durumda yıllara ayırman senin içinde kolay olmaz mı?
-
ndmylmz bunu yazdı
Hocam anlamadığım 10 yıllık veriyi nasıl aynı anda çekiyorsun.? Çektiğin yerde tek sayfada 10 yıllık veri mi tutuluyor. Bunu yapmış olmaları saçma geldi. Bi ikinci belki bunu yanlış anlamış olabilirim yani veriler tek sayfada değildir. O zaman curl döngüsünü zaten sürekli döndürmen gerekecek bu durumda yıllara ayırman senin içinde kolay olmaz mı?
çektiğim yerde tek sayfada değil hocam ama xxx.com/datas/2014-2013, xxx.com/datas/2013-2012 şeklinde tutuluyor veriler. Dolayısıyla aynı for içinde sadece yıl değişkenini değiştirerek verileri çekebiliyorum şöyle ki;
$year = array(
"2013-2014",
"2012-2013",
"2011-2012",
"2010-2011",
"2009-2010",
"2008-2009",
"2007-2008",
"2006-2007",
"2005-2006",
"2004-2005"
);
for($y = 0; $y<count($year); $y++){
$url = "http://xxx.com/datas/{$year[$y]}"
.
.
}
manyaki tarafından 15/Ara/14 01:33 tarihinde düzenlenmiştir -
acaba çektiğim verileri binary mi yapmalıyım daha hızlı ve eksiksiz olması için
-
Heh işte olay burda hocam sen kendin tek sayfa içinde karşı tarafın 10 yıllık verisini indirip kaydetmeye çalışıyorsun. Bu senin tek sayfa işleminle karşı tarafa 10 bağlantı isteği, db kayıtları vs vs demek ki hem kendi sistemine çok yük biner, hemde karşı taraf bu kadar isteği bikaç sn içinde aldığı için tepki verebilir.
<?php
$yil=$_GET["yil"]; //urlden yil değişkeni aldık..
if($yil){
//işlemler yapıldı..
//veriler alındı...
//sonunda auto sayfa yönlendirmesi yapılarak başka sayfada verialınması sağlanır..
$link = 'islemyaptigindosya.php?yil='.($yil-1);
header(Refresh:1;$link);
}
?>
İşlemi en sonunda kendin durdurabilirsin. Biraz daha uzun sürecektir ama hem senin db yi yormaz hem karşı tarafa çaktırmaz :D
-
ndmylmz bunu yazdı
Heh işte olay burda hocam sen kendin tek sayfa içinde karşı tarafın 10 yıllık verisini indirip kaydetmeye çalışıyorsun. Bu senin tek sayfa işleminle karşı tarafa 10 bağlantı isteği, db kayıtları vs vs demek ki hem kendi sistemine çok yük biner, hemde karşı taraf bu kadar isteği bikaç sn içinde aldığı için tepki verebilir.
İşlemi en sonunda kendin durdurabilirsin. Biraz daha uzun sürecektir ama hem senin db yi yormaz hem karşı tarafa çaktırmaz :D
bi deniyim hocam teşekkür ederim
-
manyaki bunu yazdındmylmz bunu yazdı
Heh işte olay burda hocam sen kendin tek sayfa içinde karşı tarafın 10 yıllık verisini indirip kaydetmeye çalışıyorsun. Bu senin tek sayfa işleminle karşı tarafa 10 bağlantı isteği, db kayıtları vs vs demek ki hem kendi sistemine çok yük biner, hemde karşı taraf bu kadar isteği bikaç sn içinde aldığı için tepki verebilir.
İşlemi en sonunda kendin durdurabilirsin. Biraz daha uzun sürecektir ama hem senin db yi yormaz hem karşı tarafa çaktırmaz :D
bi deniyim hocam teşekkür ederim
Ekstra dosya yerine sleep() kullan her loopta ?
