2011-04-29 15 views
7

मुझे यह जानने की जरूरत है कि PHP में copy() फ़ंक्शन की स्थिति कैसे प्राप्त करें।PHP में कॉपी फ़ंक्शन की प्रगति स्थिति कैसे प्राप्त करें?

मैं इस फ़ंक्शन का उपयोग दूरस्थ फ़ाइल डाउनलोड करने के लिए कर रहा हूं, और मुझे इस प्रोग्राम के लिए प्रगति पट्टी चाहिए।

उत्तर

15

आपको अपना स्वयं का प्रतिलिपि लिखना होगा। सबसे पहले फ़ाइल आकार इस समाधान के साथ उदाहरण के लिए, एक HTTP HEAD अनुरोध के माध्यम से जाँच:

http://php.net/manual/en/function.filesize.php#92462

फिर फ़ाइल लाने के लिए ऐसा करते हैं: मदद के लिए

$remote = fopen('remote-file', 'r'); 
$local = fopen('local-file', 'w'); 

$read_bytes = 0; 
while(!feof($remote)) { 
    $buffer = fread($remote, 2048); 
    fwrite($local, $buffer); 

    $read_bytes += 2048; 

    //Use $filesize as calculated earlier to get the progress percentage 
    $progress = min(100, 100 * $read_bytes/$filesize); 
    //you'll need some way to send $progress to the browser. 
    //maybe save it to a file and then let an Ajax call check it? 
} 
fclose($remote); 
fclose($local); 
+0

thanx, तो हम इस का उपयोग कर सकते प्रगति पट्टी बनाने के लिए jquery के साथ प्रगति डेटा क्या हमें इसे फ़ाइल में स्टोर करने या इको के साथ प्रिंट करने की आवश्यकता है –

+0

मुझे लगता है कि आपको प्रगति को एक फ़ाइल में सहेजना होगा। लूप से पहले फ़ाइल में पूर्ण फ़ाइल आकार को स्टोर करने का सबसे अच्छा तरीका हो सकता है। फिर आप उस फ़ाइल आकार की तुलना गंतव्य फ़ाइल के आकार के साथ कर सकते हैं (जैसा कि फाइलसाइज़() द्वारा पढ़ा गया है) और फ़ाइल Jquery कॉल में प्रगति की गणना करें। –

+0

अगर मैं इसे फाइल करने के लिए संग्रहीत करता हूं कि इसे विभिन्न उपयोगकर्ताओं के लिए –

1

आपको copy() मेरे ज्ञान पर कॉल करने के लिए प्रगति पट्टी नहीं मिल सकती है।

संबंधित मुद्दे