curl

2011-05-12 19 views
5

के साथ stream_notification_callback का उपयोग कैसे करें curl के साथ stream_notification_callback का उपयोग करना संभव है?
मैं उदाहरण # 1 को अनुकूलित करना चाहता हूं जिसे मैंने http://www.php.net/manual/en/function.stream-notification-callback.php पर पाया है, जो मेरे कर्ल फ़ंक्शन में डाउनलोड की गई बाइट्स वाली टेक्स्ट फ़ाइल बनाने/अपडेट करने के लिए नीचे है।curl

मुझे पता है कि CURLOPT_PROGRESSFUNCTION PHP 5.3 में लागू किया गया है लेकिन मैं PHP 5.2 चला रहा हूं और मैं अपग्रेड नहीं कर सकता।

private function Save($url) { 
    $this->SetTempFileName(time()); 
    $file = fopen($this->GetTempVidFileName(), 'w'); 
    $ckfile = tempnam("/tmp_cookie", "CURLCOOKIE"); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_FILE, $file); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); 
    curl_exec($ch); 
    curl_close($ch); 
    fclose($file); 
    return is_file($this->GetTempFileName()); 
} 

मुझे पता है कि मैं file_put_contents उपयोग करने के लिए इस तरह "मामले STREAM_NOTIFY_PROGRESS" भाग को बदलने के लिए होगा ...

case STREAM_NOTIFY_PROGRESS: 
file_put_contents('progress.txt', $bytes_transferred); 
break; 

... लेकिन मेरे सवाल का कैसे दोनों कोड अनुकूल करने के लिए है? अग्रिम धन्यवाद।

+0

कर्ल के बजाय stream_context_create का उपयोग करने का प्रयास करने के बारे में क्या। आप संदर्भ के बिना stream_notification_callback का उपयोग नहीं कर सकते हैं। –

उत्तर

1

मुझे डर है कि आपके विकल्प या तो कर्ल का उपयोग नहीं कर रहे हैं (और इसके बजाय अधिक सीमित HTTP रैपर या यहां तक ​​कि सॉकेट का उपयोग करें) या अपग्रेड करें।

PHP 5.2 मर चुका है (अधिक अपडेट नहीं, यहां तक ​​कि सुरक्षा सुधार भी)। आप PHP 5.2 के लिए PHP 5.3 को संकलित करने का भी प्रयास कर सकते हैं (संभवतः केवल कुछ आसान समस्याएं होंगी) या यहां तक ​​कि CURLOPT_PROGRESSFUNCTION समर्थन का समर्थन भी करें।