2013-05-09 30 views
5

Curl, kullanım durumumun başka bir sunucudan veri talep etmesini kolaylaştıran birçok seçeneğe sahiptir. Komut dosyası bir proxy'ye benziyor ve şu ana kadar başka bir sunucudan veri istiyor ve sonuç verisi tamamlandıktan sonra istemciye aynı anda gönderiliyor.PHP: curl ve akış yönlendirmesi

  1. kullanıcının ziyaret http://te.st/proxy.php?get=xyz

  2. proxy.php indirme xyz dış-sunucudan

    indirme% 100 tamamlandı
  3. çıktısı verecektir veri

    Şimdi

2 ve 3'ün aynı zamanda (php5-curl ile) paralel olarak da yapılabilir. Son satır.

Dosya boyutu ortalama 20 MB ise, bu önemli bir fark yaratır.

Bunun için kıvrımlı bir seçenek var mı?

cevap

6

http://www.php.net/manual/en/function.curl-setopt.php#26239

böyle Something (test edilmemiş) bir göz atın:

function myProgressFunc($ch, $str){ 
    echo $str; 
    return strlen($str); 
} 

curl_setopt($ch, CURLOPT_WRITEFUNCTION, "myProgressFunc"); 

okuyun da burada ParallelCurl with CURLOPT_WRITEFUNCTION

+0

İyi ama mükemmel değil: arabelleğe alındı. Bu, dosya akışı için kullanılabileceği anlamına gelir, ancak bir olay akışı olduğunda, en son olaylar, kıvrılma içinde erişilememektedir ('flush()', 'hepsini yankılamaya' yardımcı olmaz. Ne yazık. Yine de sana +1. – user

1

aslında yerine tam bekleyen dosyaları akışları kodudur arabellek dosyası.

$url = YOUR_URL_HERE; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) { 
    echo $data; 
    ob_flush(); 
    flush(); 
    return strlen($data); 
}); 
curl_exec($ch); 
curl_close($ch);