PHP

2012-06-12 3 views
6

में स्ट्रिंग को संपीड़ित करने का सबसे अच्छा तरीका मैं gzcompress (json_encode ($ arr), 9) के साथ सरणी को संपीड़ित कर रहा हूं। तो मैं सरणी को json_encode के साथ स्ट्रिंग में परिवर्तित कर रहा हूं और फिर gzcompress के साथ संपीड़ित कर रहा हूं। लेकिन मुझे परिणामस्वरूप स्ट्रिंग के आकार में बहुत अंतर नहीं मिला। संपीड़न आकार 488 केबी से पहले और संपीड़न आकार 442 केबी के बाद है।PHP

क्या कोई तरीका है कि मैं स्ट्रिंग को और अधिक संपीड़ित कर सकता हूं?

अग्रिम धन्यवाद।

उत्तर

10

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

आपको यह निर्धारित करने की कोशिश करनी चाहिए कि आपके डेटा को संपीड़ित करने के लिए मुख्य रूप से क्या होता है और फिर उचित संपीड़न का चयन करें।

अभी अभी मैं आपको केवल bzcompress पर देख सकता हूं, bzip आमतौर पर gzip की तुलना में उच्च संपीड़न दर है।

10

मुझे यकीन नहीं है कि आपकी संख्या सही है, इसलिए आप gzcompress के बजाय gzdeflate का उपयोग कर सकते हैं क्योंकि gzcompress आउटपुट में 6 बाइट जोड़ता है, शुरुआत में 2 अतिरिक्त बाइट्स और अंत में 4 अतिरिक्त बाइट जोड़ता है।

एक साधारण परीक्षण एक बार संकुचित होने पर 9964 बाइट्स को संकुचित करके 1756800 लेन स्ट्रिंग को संकुचित करता है, 5164 बाइट्स को संपीड़ित किया जाता है।

<?php 
$string = str_repeat('1234567890'.implode('', range('a', 'z')), 48800); 

echo strlen($string); //1756800 bytes 

$compressed = gzdeflate($string, 9); 
$compressed = gzdeflate($compressed, 9); 

echo '<br/>'.strlen($compressed).'<br/>';//99 bytes 

echo gzinflate(gzinflate($compressed)); 
?> 
संबंधित मुद्दे