$content= file_get_contents("http://blabla");
echo $content;
If you need to use such php code for your purpose such as cross domain xmlhttprequest, there can be a problem depends on you hosting company. They could disable the opportunity to have contact with external files because of security reasons. Thus, here is the solution.
<?php
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, "http://blabla");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
// display file
echo $file_contents;
?>
Take care!
Timeout'u sıfırlamak ya da hiç koymamak bazen hoş olmayan sonuçları beraberinde getiriyor =)
YanıtlaSilAyrıca çeşitli botlar kullanarak(google botları) nispeten daha verimli yapabiliyorsun:
$userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)';
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
şeklinde.
Ha bir de cURL denilen meret aşırı yavaş çalışır. Ömrümü törpüledi stajda =)
Üste ekleyemeyince fazladan bir yorum girmek durumunda kaldım.
YanıtlaSilBir de bazen cURL istediğin işi yapmaz, saatlerce browser başında bekletir hata raporu çıkarttırmazsan.
curl_exec'le execute işini yaptıktan sonra:
if (!$file_contents)
{
echo "
cURL error number:" .curl_errno($ch);
echo "
cURL error:" . curl_error($ch);
exit;
}
kısmını koyunca en azından hata numarasıyla hemen google üstünden sorun bulabilirsin.
curl in bu calisma sikintisinin nedeni hakkinda bir fikrin var mi?
YanıtlaSilBilgileri aldığın serverdan kaynaklı sayılır aslında.
YanıtlaSilMisal bir siteden, parsingini falan halledip, 100 tane isim alıp database'e atmak istiyorsun. Gerekli kodu yazıp, execute ettikten hemen sonra browser'da işlemi durdursan bile 100 tane isim belli bir süre sonra database'ine girmiş bulunacak. Yani kod execute edilmiş, curl'de servera istediği bilgileri göndermiştir; ama server'dan istediğin bilgilerin gelmesi uzun sürer.
Stajda 24000 doktora dair bilgileri almak için kullanmıştım cURL'ü ve test için sadece 30 tane doktoru kullanırken bile 2 ila 10 dakika arası browser'da outputunu bekliyordum. 3 ila 15 dakika arası da database'e girişi vardı =)
Hani küçük işler için kullanılır da çok büyük işlerde bilgisayarını baya uzun süre açık bırakmak zorundasın. Arada internet, elektrik kesilirse de sil baştan başlama durumu var bir de.