2012-03-02 10 views
5

हाय एक सर्वर जो एक PHP स्क्रिप्ट के साथ है जो छवि डाउनलोड से संबंधित है। यह सभी छवियों को डाउनलोड करने के बाद इसे ज़िप करता है और फिर कोई उपयोगकर्ता उन्हें डाउनलोड कर सकता है।अलग सर्वर पर ज़िप की मॉनिटर प्रगति

इस प्रक्रिया का अनुरोध करने के लिए उपयोगकर्ता एक वेबपृष्ठ पर एक बटन क्लिक करता है जो तब मेरी वेबसाइट को इस प्रक्रिया को शुरू करने के लिए इस अन्य सर्वर को बताने के लिए कहता है। ऐसा इसलिए वेबसेवर अनुरोधों से संबंधित है जो फ़ाइल डाउनलोड/ज़िप से निपटता नहीं है और यह समय समाप्त नहीं होगा।

मैं सोच रहा था कि ज़िपिंग पूर्ण होने पर उपयोगकर्ता को सूचित करने के लिए मैं उपयोगकर्ताओं के वेबपृष्ठ पर ज़िप की प्रगति कैसे बता सकता हूं?

उत्तर

2

मैं "क्यू बनाई गई ज़िप फ़ाइल" के समान नाम के साथ एक कतार फ़ाइल बनाउंगा लेकिन एक और एक्सटेंशन के साथ।

आपके सर्वर पर डाउनलोड फ़ाइल बनाता है, स्क्रिप्ट को एक ही नाम के साथ एक और फ़ाइल बनाने दें, लेकिन एक स्टेटस कोड एक्सटेंशन के रूप में। (पूर्व 123456789.PRO प्रगति और यह तैयार होने के लिए 123456789.DON में अर्थ) स्क्रिप्ट ज़िप फ़ाइल फिर इस फ़ाइल नाम को बदल सकते बनाता .pro से पहले शुरू फ़ाइल बनाता है, और समाप्त हो गया .DON)

अब अपने वेबसर्वर पर एक एजेक्स कॉल करें जो एक PHP स्क्रिप्ट पढ़ता है, जो इसकी वापसी में जांचता है कि फ़ाइल मौजूद है या नहीं।

फ़ाइल वहाँ नहीं: प्रक्रिया को प्रारंभ नहीं .pro फ़ाइल मौजूद है: प्रसंस्करण .DON फ़ाइल मौजूद है: डाउनलोड लिंक

ajax कॉल हर कुछ सेकंड की जाँच की जा सकता है, बनाएं आप के लिए और कितना सर्वर आप लोड अप चाहते हैं।

0

आप प्रत्येक एक्स सेकंड में प्रगति का अनुरोध करने के लिए क्लाइंट से AJAX के माध्यम से मतदान सेट अप कर सकते हैं।

ज़िप करने के लिए php स्क्रिप्ट आप उत्पादन एक/tmp/फाइल करने के लिए प्रगति कर सकते हैं में,

zip -v filename.zip file1 file2 file3 > /tmp/tmpid.txt 

जवाब php स्क्रिप्ट में की तरह, आप tmp आउटपुट फ़ाइल पढ़ सकते हैं (उदाहरण के लिए /tmp/zip_af45d26746a4e5bf01.txt) और प्रगति की गणना करें और ब्राउज़र पर वापस आएं।

+0

ज़िप -v? उस तर्क का उपयोग करके लूप में काउंटर जोड़ना सबसे अच्छा होगा, जहां सभी फाइलों का ज़िपण किया जाता है और कुल आइटम के बीच अनुपात और फ़ाइल को आउटपुट के बीच अनुपात मिल जाता है। इससे आप सर्वर से अनुरोध कर सकते हैं कि केवल प्रतिशत अंतर देता है और तदनुसार बार को अपडेट करता है? – mirugai

0

निष्पादन() के माध्यम से ज़िप फ़ाइल की स्थिति के मतदान के साथ विचार एक परियोजना के लिए सही था जो मेरे लिए बड़ी ज़िप-फाइलें बना रहा था।

मैं जिप-स्क्रिप्ट में प्रयोग किया जैसे एक बयान:

exec("zip -qdgds 10m output.zip file1.php file2.php > log_dot.txt"); 

और अब एक और ajax स्क्रिप्ट चुनाव और (फ़ाइल आकार समग्र फ़ाइलें और डॉट * 10 एमबी प्रत्येक) zip- के निर्माण की वास्तविक प्रक्रिया की गणना फ़ाइल।

हो सकता है कि मैनुअल मदद किसी और भी php में zip-maual

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