2010-01-13 16 views
8

मैं बाहरी सर्वर से यादृच्छिक बड़ी तस्वीर का एक छोटा थंबनेल उत्पन्न करने के लिए अपनी PHP स्क्रिप्ट में जीडी लाइब्रेरी का उपयोग करना चाहता हूं। प्रत्येक बार पृष्ठ कहलाता है, जीडी लाइब्रेरी एक थंबनेल पुन: उत्पन्न करेगी और इसे दिखाएगी।क्या जीडी लाइब्रेरी बहुत मेमोरी का उपयोग करती है?

क्या यह सर्वर को धीमा कर देगा या स्मृति की असामान्य मात्रा का उपयोग करेगा?

+0

थंबनेल पुनर्जन्म सर्वर समय लेता है।यह जानने का एकमात्र तरीका है कि यह "बहुत धीमा" बनाता है या नहीं, इसे आजमाकर देखना है। इसके अलावा, "स्मृति" और "गति" दो पूरी तरह से अलग अवधारणाएं हैं। –

उत्तर

1

सुनिश्चित करें कि यह सर्वर धीमा कर देगा, यह आपके द्वारा उपयोग की जा रही छवि के आकार पर भी निर्भर करता है। आप थंबनेल-छवि को क्यों नहीं बचाते?

0

यदि आप प्रत्येक पृष्ठ लोड का नया थंबनेल जेनरेट करते हैं, तो इसमें अतिरिक्त प्रोसेसिंग समय लगेगा। छवियों की मात्रा के आधार पर आप थंबनेलिंग के साथ-साथ उनके मूल आकारों के आधार पर, आप धीमेपन को नोटिस कर सकते हैं या नहीं भी देख सकते हैं। यदि वैसे भी है तो आप पहले पेज लोड पर थंबनेल बना सकते हैं और इसे सहेज सकते हैं, और अन्य पेज लोड के लिए पूर्व-निर्मित संस्करण लोड कर सकते हैं, तो आप बेहतर होंगे।

7

जीडी बहुत सारी मेमोरी का उपयोग करता है। यह छवि को पूरी तरह मेमोरी में लोड करता है और इसे असम्पीडित करता है, इसलिए आपको प्रति पिक्सेल कम से कम 32 बिट्स की आवश्यकता होगी। आकार 800 x 600 के साथ एक छवि तो प्रयोग करते हैं:

800 * 600 * 32 बिट = 15.4 मेगाबिट = 2 एमबी

यह केवल छवि को लोड करने के लिए है। मैंने सुना है कि यदि आप आकार बदलते हैं तो यह इसके डबल का उपयोग करेगा, और यदि आपकी छवियां भी बड़ी हैं तो यह और भी स्मृति होगी।

आपको वास्तव में अपने थंबनेल को कैशिंग करने पर विचार करना चाहिए ताकि उन्हें केवल एक बार उत्पन्न होना पड़े (यह आपके आगंतुकों के लिए भी पृष्ठ को तेज करेगा!)।

मैं अब भी पढ़ता हूं कि आप बाहरी सर्वर से छवियों को लोड कर रहे हैं, इस स्थिति में आपको वास्तव में छवि को कैश करना होगा क्योंकि अन्यथा आपके आगंतुकों को पूरी छवि को पहले डाउनलोड करने के लिए इंतजार करना होगा। बाहरी सर्वर डाउन या ओवरलोड होने पर यह और भी बदतर हो जाता है और आपके आगंतुकों को टाइमआउट के लिए इंतजार करना होगा (ऐसा लगता है कि यह आपकी सेवा धीमा है)। इसके अतिरिक्त यदि आप उपयोगकर्ता द्वारा थंबनेल का अनुरोध करते हैं तो आप छवि को डाउनलोड करते समय बहुत सारी बैंडविड्थ बर्बाद कर देंगे।


के बाद से जी.डी. इतना मेमोरी का उपयोग करता है, यह बजाय Imagick एक्सटेंशन का उपयोग कर थंबनेल उत्पन्न करने के लिए सार्थक हो सकता है। ImageMagick स्मृति खपत के संबंध में बहुत बेहतर पैमाने पर स्केल करता है और यह भी बहुत तेज है (लेकिन ऊपर वर्णित कारणों के लिए आपको अभी भी छवियों को कैश करना चाहिए)।

+1

+1 * "ImageMagick मेमोरी खपत के संबंध में बहुत बेहतर स्केल करता है" *, यह महत्वपूर्ण जानकारी है जो आपके पास बोल्ड में होनी चाहिए! बाकी आप मिटा सकते हैं। :-) – TMS

1

क्या आप इसके साथ क्या कर रहे हैं पर निर्भर करता है, लेकिन क्यों अपने आप के लिए कोशिश नहीं की:

  • memory_get_usage() - स्मृति की मात्रा पीएचपी
  • memory_get_peak_usage() के लिए आवंटित रिटर्न - पीएचपी
  • द्वारा आबंटित स्मृति के शिखर रिटर्न
1

किसी भी प्रकार की छवि प्रसंस्करण स्मृति गहन होने की संभावना है।

यदि आप इन छवियों को कैश कर सकते हैं ताकि उन्हें पृष्ठ पर हर हिट के साथ पुन: उत्पन्न न किया जा सके, यह एक अच्छा कदम होगा।

एक PHP लाइब्रेरी जो आपके लिए इस कैशिंग के साथ बहुत सी है, यह phpThumb है - यह संभवतः इन कार्यों के लिए आदर्श है।

http://phpthumb.sourceforge.net/

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