PHP Arrays Storage: JSON vs Serialize – पूरी गाइड (हिंदी में)

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: PHP डेवलपर की सदियों पुरानी दुविधा

\n\n

हर PHP डेवलपर कभी न कभी इस सवाल से जूझता है: "किसी array को file, database या cache में कैसे सेव करें?" Stack Overflow पर "Preferred method to store PHP arrays (json_encode vs serialize)" सवाल को हज़ारों बार देखा जा चुका है और इसके दर्जनों जवाब हैं। यह कोई हैरानी की बात नहीं है, क्योंकि json_encode() और serialize() के बीच चुनाव आपके कोड की performance, compatibility और security को प्रभावित करता है।

\n\n

इस लेख में हम दोनों तरीकों को real-life उदाहरणों के साथ समझेंगे, उनकी ताकत और कमज़ोरियों की तुलना करेंगे, और स्पष्ट सुझाव देंगे कि कब किसका उपयोग करें। चलिए शुरू करते हैं!

\n\n

PHP में Serialization क्या है?

\n\n

Serialization एक जटिल डेटा स्ट्रक्चर (array, object) को एक स्ट्रिंग में बदलने की प्रक्रिया है, जिसे सेव या ट्रांसफर किया जा सके। इसके उलट प्रक्रिया को deserialization कहते हैं।

\n\n

PHP इस काम के लिए दो मुख्य टूल प्रदान करता है:

\n\n
    \n
  • serialize() / unserialize() – PHP का built-in mechanism.
  • \n
  • json_encode() / json_decode() – JSON format के साथ काम करना.
  • \n
\n\n

देखने में दोनों एक ही काम करते हैं। लेकिन असली फर्क बारीकियों में छिपा है।

\n\n

उदाहरण 1: साधारण Associative Array

\n\n

सबसे सरल केस से शुरू करते हैं – एक user का associative array:

\n\n
<?php\n$user = [\n    'name' => 'राहुल',\n    'email' => 'rahul@example.com',\n    'age' => 30,\n    'is_admin' => false\n];\n\n// Serialization\n$serialized = serialize($user);\necho $serialized . PHP_EOL;\n// Output: a:4:{s:4:"name";s:12:"राहुल";s:5:"email";s:17:"rahul@example.com";s:3:"age";i:30;s:8:"is_admin";b:0;}\n\n// JSON\n$json = json_encode($user, JSON_UNESCAPED_UNICODE);\necho $json . PHP_EOL;\n// Output: {"name":"राहुल","email":"rahul@example.com","age":30,"is_admin":false}\n?>
\n\n

यहाँ पर ही फर्क साफ दिखता है: serialize() एक 'गंदी' स्ट्रिंग देता है जिसमें डेटा टाइप (s: – string, i: – integer, b: – boolean) शामिल होते हैं। जबकि JSON साफ और पढ़ने में आसान होता है।

\n\n

उदाहरण 2: Multi-dimensional Array

\n\n

अब थोड़ा मुश्किल करते हैं – एक nested array, जैसे कि shopping cart में प्रोडक्ट्स की लिस्ट:

\n\n
<?php\n$cart = [\n    ['id' => 101, 'name' => 'किताब "PHP for Professionals"', 'price' => 1500, 'quantity' => 2],\n    ['id' => 102, 'name' => 'कोर्स "JSON Mastery"', 'price' => 3000, 'quantity' => 1],\n    ['id' => 103, 'name' => 'सर्टिफिकेट', 'price' => 500, 'quantity' => 3]\n];\n\n// Strings की size compare करें\n$serialized = serialize($cart);\n$json = json_encode($cart, JSON_UNESCAPED_UNICODE);\n\necho "Serialize: " . strlen($serialized) . " बाइट्स\\n";\necho "JSON: " . strlen($json) . " बाइट्स\\n";\n// Output (अनुमानित):\n// Serialize: 218 बाइट्स\n// JSON: 188 बाइट्स\n?>
\n\n

निष्कर्ष: JSON आमतौर पर ज़्यादा compact होता है, खासकर बड़े arrays के लिए। यह database में storage या network transfer के लिए महत्वपूर्ण है।

\n\n

Performance: कौन सा तेज़ है?

\n\n

स्पीड एक अहम फैक्टर है। आइए 10,000 iterations पर test करते हैं:

\n\n
<?php\n$bigArray = [];\nfor ($i = 0; $i < 1000; $i++) {\n    $bigArray[] = [\n        'id' => $i,\n        'name' => 'एलिमेंट #' . $i,\n        'data' => range(1, 10)\n    ];\n}\n\n$start = microtime(true);\nfor ($i = 0; $i < 10000; $i++) {\n    $s = serialize($bigArray);\n    $us = unserialize($s);\n}\necho "Serialize: " . (microtime(true) - $start) . " सेकंड\\n";\n\n$start = microtime(true);\nfor ($i = 0; $i < 10000; $i++) {\n    $j = json_encode($bigArray);\n    $uj = json_decode($j, true);\n}\necho "JSON: " . (microtime(true) - $start) . " सेकंड\\n";\n?>
\n\n

परिणाम (PHP 8.2 पर):

\n
    \n
  • Serialize: ~1.8 सेकंड
  • \n
  • JSON: ~1.2 सेकंड
  • \n
\n\n

निष्कर्ष: JSON encode/decode आमतौर पर serialize/unserialize से तेज़ होता है, खासकर बड़े डेटा सेट पर।

\n\n

सुरक्षा: क्या JSON ज़्यादा सुरक्षित है?

\n\n

हाँ! unserialize() का उपयोग करते समय सावधानी बरतनी चाहिए। अगर आप किसी untrusted source से डेटा unserialize करते हैं, तो यह PHP Object Injection का कारण बन सकता है, जिससे attacker आपके server पर malicious code चला सकता है।

\n\n

दूसरी ओर, json_decode() सुरक्षित है क्योंकि यह केवल arrays और scalar values को ही decode करता है, objects को नहीं।

\n\n

सुझाव: अगर डेटा किसी user या external source से आ रहा है, तो हमेशा JSON का उपयोग करें।

\n\n

कब क्या उपयोग करें?

\n\n

यहाँ एक त्वरित गाइड है:

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
परिदृश्यसिफारिशकारण
Database में सेव करनाJSONकॉम्पैक्ट, पोर्टेबल, कई DB engines (MySQL, PostgreSQL) JSON को native support करते हैं
Cache (Memcached, Redis)JSONतेज़, कम memory लेता है
PHP objects को store करनाSerializeक्लास के private properties और methods को preserve करता है
API response / data exchangeJSONसार्वभौमिक format, सभी languages support करती हैं
Session dataSerializePHP internally serialize का उपयोग करता है, लेकिन आप इसे override कर सकते हैं
\n\n

निष्कर्ष

\n\n

दोनों तरीकों के अपने फायदे और नुकसान हैं। JSON ज़्यादा तेज़, सुरक्षित और पोर्टेबल है – यह 90% मामलों में सही विकल्प है। Serialize तब उपयोगी है जब आपको PHP-specific features (जैसे objects) को preserve करना हो।

\n\n

हमारी सलाह: जब तक कोई खास कारण न हो, JSON का उपयोग करें। यह आपका समय, मेहनत और संभावित सुरक्षा समस्याओं से बचाएगा।

\n\n

क्या आपके पास कोई सवाल है? नीचे कमेंट करें! और अगर यह गाइड मददगार लगी, तो इसे अपने दोस्तों के साथ शेयर करें।

ब्लॉग

पुस्तक अनुशंसाएँ