PHP में किसी ऑब्जेक्ट द्वारा उपयोग की जाने वाली मेमोरी को कैसे ढूंढें? (सी का आकार)। जिस वस्तु को मैं खोजना चाहता हूं वह स्ट्रिंग्स और इंट्स के साथ एक शब्दकोश है, जिससे इसे मैन्युअल रूप से गणना करना मुश्किल हो जाता है। एन्कोडिंग (utf8 आदि) के आधार पर PHP में स्ट्रिंग भी विभिन्न लंबाई का हो सकता है?PHP में किसी ऑब्जेक्ट द्वारा उपयोग की जाने वाली मेमोरी को कैसे ढूंढें? (आकार)
उत्तर
आप memory_get_usage() का उपयोग कर सकते हैं।
अपनी ऑब्जेक्ट बनाने से पहले इसे फिर से चलाएं, फिर अपनी ऑब्जेक्ट बनाने के बाद, और दो परिणामों के बीच अंतर लें।
मुझे नहीं पता कि PHP में किसी ऑब्जेक्ट का आकार प्राप्त करने का एक आसान तरीका है। तुम बस एक algorith करने के लिए हो सकता है
- गिनता ints हार्ड डिस्क पर किसी पूर्णांक
- ASCII करने के लिए तार में कन्वर्ट अक्षर और
- गुणा ASCII मूल्यों के आकार से ints की
- गुणा संख्या डिस्क
मुझे यकीन है कि एक बेहतर तरीका है, लेकिन यह काम करेगा, भले ही यह दर्द हो।
वस्तुओं आकार के बारे में एक विचार प्राप्त करने के लिए,
strlen(serialize($object));
कोशिश नहीं सही तरह से यह है, लेकिन तुलना के लिए एक संख्या प्राप्त करने के लिए एक आसान तरीका।
इसमें कुछ उपयोग हो सकते हैं, लेकिन स्मृति के लिए नहीं। PHP <= 5.2 गहराई से अक्षम है जिस तरह से यह कुछ स्मृति संरचनाओं को संग्रहीत करता है। – danorton
मैं इसे भेजने से पहले जेसन प्रतिक्रिया की जांच करने के लिए इसका उपयोग कर रहा था, लेकिन यह वास्तव में मेरी स्मृति सीमा को समाप्त करता है – clod986
यदि आपको पहले से बनाए गए ऑब्जेक्ट या सरणी के आकार को जानने की आवश्यकता है, तो आप इसे ढूंढने के लिए निम्न कोड का उपयोग कर सकते हैं।
<?php
function rec_copy($src) {
if (is_string($src)) {
return str_replace('SOME_NEVER_OCCURING_VALUE_145645645734534523', 'XYZ', $src);
}
if (is_numeric($src)) {
return ($src + 0);
}
if (is_bool($src)) {
return ($src?TRUE:FALSE);
}
if (is_null($src)) {
return NULL;
}
if (is_object($src)) {
$new = (object) array();
foreach ($src as $key => $val) {
$new->$key = rec_copy($val);
}
return $new;
}
if (!is_array($src)) {
print_r(gettype($src) . "\n");
return $src;
}
$new = array();
foreach ($src as $key => $val) {
$new[$key] = rec_copy($val);
}
return $new;
}
$old = memory_get_usage();
$dummy = rec_copy($src);
$mem = memory_get_usage();
$size = abs($mem - $old);
?>
यह अनिवार्य रूप से सरणी संरचना और उसके सदस्यों की सब एक कॉपी बन जाती।
एक 100% सही नहीं है, लेकिन अभी भी काम कर संस्करण भी है:
<?php
$old = memory_get_usage();
$dummy = unserialize(serialize($src));
$mem = memory_get_usage();
$size = abs($mem - $old);
आशा है कि ऐसे मामलों में जहां वस्तु पहले से ही निर्माण कर रहा है के लिए मदद करता है।
- 1. किसी ऑब्जेक्ट द्वारा उपयोग की जाने वाली मेमोरी को कैसे ढूंढें
- 2. रूबी ऑब्जेक्ट द्वारा उपयोग की जाने वाली मेमोरी को कैसे ढूंढें?
- 3. किसी भी आईफोन ऐप द्वारा उपयोग की जाने वाली मेमोरी
- 4. आर - राजवा द्वारा उपयोग की जाने वाली मेमोरी को कैसे साफ़ करें?
- 5. क्या एमकेमैपव्यू द्वारा उपयोग की जाने वाली मेमोरी कुछ कैसे जारी की जा सकती है?
- 6. प्रक्रिया द्वारा उपयोग की जाने वाली सभी मेमोरी एड्रेस स्पेस कैसे प्राप्त करें?
- 7. डेटाबेस में नल द्वारा उपयोग की जाने वाली जगह
- 8. फेसबुक द्वारा उपयोग की जाने वाली आईपी स्पेस की सूची
- 9. Postgresql डेटाबेस द्वारा उपयोग की जाने वाली कुल डिस्क स्थान
- 10. PHP में किसी ऑब्जेक्ट की स्मृति में आकार प्राप्त करना?
- 11. किसी अन्य प्रक्रिया द्वारा उपयोग की जाने वाली फ़ाइल को पढ़ने
- 12. किसी वेब पेज पर प्रदान की जाने वाली स्ट्रिंग की लंबाई (पिक्सेल में) कैसे निर्धारित करें?
- 13. मैं fputcsv द्वारा उपयोग की जाने वाली रेखा समाप्ति को कैसे बदल सकता हूं?
- 14. Linux में निष्पादन योग्य द्वारा उपयोग की जाने वाली सभी साझा लाइब्रेरी को कैसे दिखाया जाए?
- 15. मैं PHP फ़ाइल में उपयोग की जाने वाली सभी कक्षाओं को कैसे ढूंढूं?
- 16. एक निश्चित रूप से भारी WPF नियंत्रणों द्वारा उपयोग की जाने वाली एक निःशुल्क मेमोरी कैसे हो सकती है?
- 17. एकाधिक कक्षाओं द्वारा उपयोग की जाने वाली विधियों को कहां रखा जाए?
- 18. एक इटेबल ऑब्जेक्ट का आकार कैसे ढूंढें?
- 19. किसी दिए गए समय में उपयोग की जाने वाली नेटवर्क बैंडविड्थ को कैसे जानें?
- 20. आईफोन पर बैटरी आइकन द्वारा उपयोग की जाने वाली जगह को कैसे बदला जाए?
- 21. जावा प्रोग्राम चलाने के लिए एक्लिप्स द्वारा उपयोग की जाने वाली कमांड लाइन को कैसे जानें?
- 22. ConfigParser द्वारा उपयोग की जाने वाली कॉन्फ़िगरेशन फ़ाइलों में DEFAULT अनुभाग का इच्छित उपयोग क्या है?
- 23. लुआ में किसी ऑब्जेक्ट के सभी गुणों को कैसे ढूंढें?
- 24. Django और NoSQL, किसी भी उपयोग में जाने वाली लाइब्रेरी?
- 25. किसी तत्व की विरासत वाली संपत्ति को हटाने (बॉक्स आकार)
- 26. किसी ऑब्जेक्ट का मेमोरी उपयोग लॉगिंग
- 27. किसी ऑब्जेक्ट के गुण कैसे ढूंढें?
- 28. आवेदन बनाते/हस्ताक्षर करते समय एक्सकोड द्वारा उपयोग की जाने वाली एप्लिकेशन आईडी कैसे होती है?
- 29. लिनक्स कर्नेल द्वारा उपयोग की जाने वाली डिवाइस पेड़ फ़ाइल (डीटीबी) को देखने के लिए टूल?
- 30. apache PHP मेमोरी उपयोग वास्तव में कैसे काम करता है?
मेमोरी के दौरान इसे करने का एक और तरीका है स्मृति उपयोग प्राप्त करें, ऑब्जेक्ट क्लोन करें, नया मेमोरी उपयोग प्राप्त करें और क्लोन को अनसेट करें। हालांकि एक पदचिह्न है, इसलिए दुरुपयोग न करें ... :) –
मुझे विश्वास है कि हम एक सरणी से पहले और बाद में 'echo memory_get_usage()' से प्राप्त कर रहे हैं, इसकी इकाइयां 'केबी' में होने का अनुमान है !! ! मैंने स्मृति आकार को 1024 से विभाजित किया! वास्तविक स्मृति आकार का उपभोग करने के लिए। – Neocortex
नहीं यह बाइट्स में नहीं है kb http://ca3.php.net/memory_get_usage –