मुझे ini_get('memory_limit')
द्वारा दिए गए मान का परीक्षण करने की आवश्यकता है और यदि यह निश्चित सीमा से नीचे है तो मेमोरी सीमा बढ़ाएं, हालांकि ini_get('memory_limit')
पूर्णांक की बजाय '128 एम' जैसे कॉल रिटर्न मानों को कॉल करता है।क्या PHP में '256M', '180K', '4G' जैसे स्ट्रिंग्स से कनवर्ट करने का कोई आसान तरीका उनके पूर्णांक समकक्षों में है?
मैं जानता हूँ कि मैं इन तार (मामले को ले और 'बी के खाते में अनुगामी) पार्स करने के लिए एक समारोह में लिख सकते हैं के रूप में मैं उन्हें कई बार लिखा है:
function int_from_bytestring ($byteString) {
preg_match('/^\s*([0-9.]+)\s*([KMGTPE])B?\s*$/i', $byteString, $matches);
$num = (float)$matches[1];
switch (strtoupper($matches[2])) {
case 'E':
$num = $num * 1024;
case 'P':
$num = $num * 1024;
case 'T':
$num = $num * 1024;
case 'G':
$num = $num * 1024;
case 'M':
$num = $num * 1024;
case 'K':
$num = $num * 1024;
}
return intval($num);
}
बहरहाल, यह कठिन हो जाता है और यह एक तरह लगता है उन यादृच्छिक चीजों में से जो PHP में पहले से मौजूद हैं, हालांकि मुझे यह कभी नहीं मिला है। क्या किसी को इन बाइट-रेंज स्ट्रिंग को पार्स करने के लिए कुछ अंतर्निहित तरीके से पता है?
में गायब 'ब्रेक' नोट करें जॉन के उत्तर के समान समस्या: वैकल्पिक पिछला बी – cletus
हां, यह सच नहीं है। मैं इसे अधिकतर यह स्पष्ट करने के लिए प्रदान कर रहा था कि PHP मैनुअल ने यह कैसे किया है। यह काम करेगा यदि आप केवल 'ini_get()' के परिणामों का विश्लेषण करना चाहते हैं, अन्यथा आपको इसे स्वयं संशोधित करना होगा। पोस्टर प्रश्न का संक्षिप्त जवाब वास्तव में है "नहीं, एक अंतर्निहित विधि नहीं है।" – zombat
मैं इस जानकारी को आईएनआई मानों के विवरण में और 'ini_get() 'फ़ंक्शन के लिए दस्तावेज़ों के अलावा अन्य सभी जगहों के बारे में जानकारी दे रहा था। इसे खोजने के लिए धन्यवाद। –