[Soru] Php Data Çekme Botu İle İlgili
-
Php ile kategori->alt kategori -> alt alt kategori şeklinde gezip bulduğu sayfayı parse edip dbye basan bir bot yazdım. Simple html dom parser sınıfını kullanarak yazdım, ancak php bilmediğim için şöyle sıkıntılarım var;
1) kullandığım hazır sınıfın en popüler hatası olan "bu fonksiyonu non-object bir değişken ile kullanamazsınız". Kullanımım şu şekilde;
$data = getSayfa($url) //curl ile sayfa çekilip bi değişkene atanıyor, o değişken return ediliyor
$html = str_get_html($data)
getSayfa içerisinde returnden önce return edilecek değişkeni yazdırdığımda sıkıntı yok, ama kullandığım şekilden sonra var_dump($data) dediğimde bool(false) yazdırıyor, muhtemelen bu yüzden str_get_html işe yaramıyor, devamında $html->find('a') dediğimde hata veriyor. localde wamp sıkıntı yapmıyor ama sunucu bu hata yüzünden çalıştırmıyor scripti, 500 dönüyor.
2) sanırım kodun urlleri gezme işlemi sql sorgularından daha hızlı gerçekleşiyor, haliyle 5url gezilip 5 sorgu gönderiliyor ama ancak 1 tanesi insert yapabiliyor gibi. Çünkü test ederken sadece urlleri çektirmiştim, tamamlanmadan durdurmama rağmen yaklaşık 10k url çekilmişti, ancak gece scripti açtım, sabah kalktığımda hata vermeden durmuştu ve sadece 1k kayıt girilmişti dbye. Bu işi sağlıklı bi şekilde nasıl yapabilirim hani "sorgu tamamlanmadan başka urle geçme, kesinlikle işle" şeklinde. transaction denedim, ya olmadı ya ben beceremedim.
3) scriptin bitmesi saatler alacak, bu engetli set_time_limit ile localde wampda aşıyorum ama sunucuda bu fonksiyon disable edilmiş. localde çalıştırırsam işlemin tamamlanması daha uzun sürecek, sunucuda ne şekilde çalıştırabilirim scripti?
Bu 3 başlıkla ilgili büyük ölçüde yardıma ihtiyacım var :/ 3. madde çok önemli değil, ilk ikisini çözebilsem bi makina ayırırım 2-3 gün uğraşsın çeksin diye.
***db işlemleri için pdo kullanıyorum, bot olduğu için hiç prepare olayına girmedim, direk exec diyip geçiyorum.
-
-
Hocam url yi asagidaki şekilde çekmek daha Doğru olacaktır
$kod = file_get_html ('$url');
2.sorunuz için kodlarınizi görmek ve onların üzerinden ne yapmaya çalıştığınız göstersen iz daha faydalı olabilir hocam
3.soruya gelince ya time_limit i sunucuya aldığınız firma ile görüşüp ayarlamaniz lazım hocam. Yok yapamıyorum ama illa sunucuda çalışsın istiyorsan önce tüm linkleri kısa sürede toplatip daha sonra da cron a bağlanmış bir sayfa oluşturursun. Bu sayfa çekilecek veriler sütünü boş olanı çeker dolu olana karışmaz ama emin ol hm süre hemde performans açısından rezil bir çalışma olur
-
Yazdığım kodda sıkıntı yokmuş, bütün olay urldeki Türkçe karakterler ve boşluklarmış. Ufak bi replace ile hallettim.