Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में वीक मैप्स क्या हैं?

वीक मैप्स PHP 7.4 में जोड़े गए थे। इसका उपयोग ऑब्जेक्ट्स को हटाने या डिलीट करने के लिए किया जा सकता है जब कैश ऑब्जेक्ट एंटिटी क्लासेस को संदर्भित करता है। यह उन ऑब्जेक्ट्स को संदर्भित करता है, जो ऑब्जेक्ट्स को मेमोरी गार्बेज कलेक्ट होने से नहीं रोकते। PHP 8 में, वीक मैप्स हमें ऑब्जेक्ट्स से जुड़ा रैंडम डेटा स्टोर करने की अनुमति देते हैं, बिना किसी मेमोरी लीक के।

दूसरे शब्दों में, PHP 8 में एक वीक मैप ऑब्जेक्ट्स का एक समूह है जिसमें कुंजियाँ कमजोर रूप से संदर्भित होती हैं। एक वीक मैप ऑब्जेक्ट बनाने के लिए एक क्लास का उपयोग करता है जिसे कुंजी के रूप में उपयोग किया जा सकता है, जो वीक मैप को हटाने और नष्ट करने में मदद कर सकता है यदि कोई और संदर्भ नहीं हैं। लंबी अवधि की प्रक्रिया में, यह मेमोरी लीक से बच सकता है, जो अंततः प्रदर्शन में सुधार करता है।

हम कह सकते हैं कि एक वीक मैप एक स्वचालित गार्बेज कलेक्शन प्रक्रिया के रूप में काम करता है। जब भी कोई वेरिएबल डिलीट होता है, PHP जांचेगा कि क्या कोई वेरिएबल अभी भी उस ऑब्जेक्ट को संदर्भित कर रहा है। यदि वेरिएबल संदर्भ नहीं दे रहा है, तो PHP उस ऑब्जेक्ट को सुरक्षित रूप से हटा देगा। इस प्रक्रिया को गार्बेज कलेक्शन कहा जाता है।

उदाहरण: PHP 8 में वीक मैप्स

<?php 
    class WeakExample { 
        public WeakMap $cache; 
        public function __construct() { 
            $this->cache = new WeakMap(); 
        } 
        public function getCaching(object $obj) { 
            return $this->cache[$obj] ??= $this->computeSomethingExpensive($obj); 
        } 
        public function computeSomethingExpensive(object $obj) { 
            print_r("Object called"); 
            return rand(1, 100); 
        } 
    } 
    $cacheObject = new stdClass; 
    $obj = new WeakExample; 
    $obj->getCaching($cacheObject); 
    $obj->getCaching($cacheObject); 
    print_r(count($obj->cache)); 
    unset($cacheObject); // ऑब्जेक्ट्स और वीक मैप्स को अनसेट करने से मेमोरी मुक्त होती है 
    print_r(count($obj->cache)); 
?>

आउटपुट

Object called
1
0
  1. PHP फ़ाइल क्या है? PHP फ़ाइल क्या है?

    .PHP फ़ाइल एक्सटेंशन वाली फ़ाइल एक PHP सोर्स कोड फ़ाइल है जिसमें हाइपरटेक्स्ट प्रीप्रोसेसर कोड होता है। इनका उपयोग अक्सर वेब पेज फ़ाइलों के रूप में किया जाता है जो आमतौर पर वेब सर्वर पर चल रहे PHP इंजन से HTML उत्पन्न करती हैं। PHP इंजन द्वारा कोड से बनाया गया HTML कंटेंट वही है जो वेब ब्राउज़र में

  1. - C# में नेमस्पेसेस क्या हैं

    नेमस्पेस नामों के एक सेट को दूसरे से अलग रखने का एक तरीका प्रदान करने के लिए है। नेमस्पेस डेफिनिशन namespace कीवर्ड से शुरू होती है जिसके बाद नेमस्पेस नाम आता है - namespace namespace_name { // code declarations } नेमस्पेस डिफाइन करें - namespace namespace_name { // code declarations } निम्न

  1. - फाइल इन्क्लूजन कमजोरियों और मनमाने कोड निष्पादन को समझना

    फाइल इन्क्लूजन और मनमाना कोड निष्पादन: इस महीने की शुरुआत में, वर्डप्रेस पर बनी एक हवाई जहाज टिकट वेबसाइट हैक हो गई जिससे सैकड़ों हजारों विजिटर्स का व्यक्तिगत डेटा उजागर हो गया। हैकर्स हैक क्यों करते हैं पर पहले की एक पोस्ट में, हमने उन सभी कारणों पर चर्चा की थी कि हैकर्स क्यों हैक करते हैं जिसमें ड