2010-02-05 19 views
5

मेरे पास download.php पृष्ठ वाला सिस्टम है। पृष्ठ लेता है और आईडी और डीबी रिकॉर्ड के आधार पर एक फ़ाइल लोड करता है और फिर इसे कार्य करता है। मैंने कुछ उदाहरण देखा है जहां फाइलों को कम समय के स्पैन (20ms) में कई बार अनुरोध किया जाता है। टाइम्स जो मानव इनपुट के लिए बहुत तेज़ हैं। ऐसे कई उदाहरण हैं जहां डाउनलोडर ठीक काम करता है। हालांकि, डाउनलोडर के उपयोग पर नज़र डालने में, मैंने कुछ दिलचस्प व्यवहार देखा।अपाचे/PHP सेवारत फ़ाइल एकाधिक बार

उदाहरण के लिए, आईपी पता xxx.xxx.xxx.xxx (जो जर्मनी में xxxxxx.de के स्वामित्व वाली श्रेणी में से एक है) Google के माध्यम से साइट पर आया था। उन्होंने चारों ओर ब्राउज़ किया और फिर पेज http://site.com/xxxx/press+125.php पर पहुंचे, वहां उन्होंने /download.php?id=/ZZ/n+aH55Y= (एक पीडीएफ) 9:04:23 पूर्वाह्न के लिए एक अनुरोध जारी किया। वह अकेला बड़ा सौदा नहीं है। हालांकि, दिलचस्प बात यह है कि सर्वर उस अनुरोध की सेवा के साथ काफी व्यस्त रहा है। लॉग में अनुरोध पहले 9:09:48 और 9:10:00 के बीच पूरा हो जाता है। ऐसा लगता है कि उस समय उपयोगकर्ता को प्रतीक्षा करने के थक गए होंगे और दस्तावेज़ को दो बार अनुरोध किया था। 09:14:47 और 09:15:00 के बीच एक ही अनुरोध फिर से दिखाई देता है, सिवाय इसके कि यह 9:04:43 पूर्वाह्न से पहले अनुरोध के मुकाबले 20 मिनट बाद है। फिर यह तीसरे बार पॉप अप करता है, एक अनुरोध के साथ 09:05:06 09:19:55 और 09:19:58 के बीच पूरा हो गया!

मुझे उस दस्तावेज़ का संदेह है। लॉग देखकर मैं अन्य उदाहरण देखता हूं जहां सर्वर को उस विशिष्ट फ़ाइल को संभालने के लिए थोड़ी देर लगती है। फ़ाइल /download.php?id=/ZZ/n+aH55Y= (पहले की तरह ही docuemnt) के लिए zzz.zzz.zzz.zzz [उपरोक्त से अलग] से अनुरोधों की इस सूची को देखें:

अनुरोध समय पूर्ण समय 04:32:43 04:33:36 04:32:50 04:33:36 04:32:51 04:33:38 04:33:05 04:33:38 04:33 : 34 04:33:42 04:33:05 04:33:42

तो कुछ निश्चित रूप से चल रहा है। क्या यह सर्वर को डाउनलोड करने के लिए इस विशिष्ट दस्तावेज़ के साथ करना है, download.php पेज का कोड, या अगर हम कुछ सर्वर स्तर अधिभार के सबूत देख रहे हैं क्योंकि यह वास्तविक समय में खेलता है तो मुझे अभी तक यकीन नहीं है।

निष्पक्षता में, त्रुटि के बिना /download.php?id=/ZZ/n+aH55Y= (वही पीडीएफ) डाउनलोड करने वाले अन्य उदाहरण हैं। हालांकि, यह दिलचस्प है कि एकाधिक प्रक्रियाएं केवल एक फ़ाइल के साथ होती हैं, और तब तभी जब इसे पृष्ठ http://site.com/press+125.php के माध्यम से एक्सेस किया जाता है। यदि कोड के अंदर कुछ गड़बड़ी है जो सिस्टम को कई डाउनलोड अनुरोधों को बंद करने का कारण बनती है, तो यह आगे की जांच करता है।

मुझे नहीं पता कि यह प्रेस + 125.php एक खरगोश छेद है, लेकिन अजीब विवेक है।

कोई विचार? मैं पूरी तरह से विचारों से बाहर हूँ। अपाचे अधिकतम हो गया? इस तरह बातें।

///DOWNLOAD.php 
$file = new files(); 
$file->comparison_filter("id", "=", $id); //sql to load 
if ($file->load()) { 
    $file->serve(); 
} 


//FILES 
function serve() { 
     if ($this->is_loaded) { 
      if (file_exists($this->get_value("filename"))) { 
       if ($this->get_value("content_type") != "") { 
        header("Content-Type: " . $this->get_value("content_type")); 
       }  
       header("Content-Length: " . filesize($this->get_value("filename"))); 
       if ($this->get_value("flag_image") == 0 || $this->get_value("flag_image") == false) { 
        header("Cache-Control: private"); 
        header("Content-Disposition: attachment; filename=" . urlencode($this->get_value("original_filename"))); 
       } 

       set_time_limit(0); 
       @readfile($this->get_value("filename")); 

       exit; 
      } 
     } 
} 
+0

क्या आपने यह देखने के लिए डिस्क पर देखा है कि वास्तव में यह पीडीएफ कितना बड़ा है? क्या यह किसी भी अन्य फाइलों की तुलना में काफी बड़ा है? साथ ही, क्या आप एक समर्पित सर्वर या साझा होस्टिंग पर हैं? – Paolo

+0

यह लगभग समान है। यह एक समर्पित बॉक्स है। – easement

उत्तर

0

फ़ाइल डाउनलोड के लिए सीडीएन नेटवर्क का उपयोग करें। वे आपके लिए इसे संभाल लेंगे, और साथ ही आपको बैंडविड्थ और स्केलेबिलिटी प्रदान करेंगे। आपके सर्वर पर और लॉक अप नहीं। http://www.reelseo.com/free-cdn-velocix/

+0

सीडीएन एक विकल्प नहीं है। कुछ आइटम स्वामित्व और गोपनीय हैं। मैंने कुछ कोड छीन लिया जो प्रमाणीकरण का पता लगाता है। इसके अलावा, फ़ाइलों को अपलोड करने के लिए एक व्यवस्थापक है। – easement

0
  1. आप उपयोगकर्ता-एजेंट और HTTP अनुरोध में Referer हेडर का विश्लेषण किया है?
  2. अपाचे या आपके पास जो भी है, सभी स्थिर फ़ाइलों की सेवा क्यों नहीं कर रहे हैं? यदि आप डाउनलोड आंकड़े ट्रैक करना चाहते हैं तो आप स्क्रिप्ट से स्थिर फ़ाइल में रीडायरेक्ट कर सकते हैं।
+0

कुछ प्रमाणीकरण ट्रैकिंग है। डीबी में एक हिट है जो देश और क्षेत्र को देखती है और फिर इसे लॉग फ़ाइल में लिखती है। हमें फ़ाइलों को डाउनलोड करने वाले को कैप्चर करने की आवश्यकता है। – easement

0

अपनी लॉगिंग कॉन्फ़िगरेशन में '% D% X' जोड़ें - मुझे उम्मीद है कि आपके कई प्रश्नों का उत्तर देगा।

सी

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