ওয়ার্ডপ্রেস কেন json_encode উপর ডেটা সিরিয়ালাইজেশন চয়ন?


13

ওয়ার্ডপ্রেসের সাথে আমার অল্প বয়সে, আমি ওয়ার্ডপ্রেস নিজেই দেখেছি এবং এর বন্ধুত্বপূর্ণ প্লাগইনগুলি serialize()অনেক ক্ষেত্রে ডেবিতে ডেটা সংরক্ষণ করার জন্য পিএইচপি ব্যবহার করছে । তবে সাম্প্রতিক অনুসন্ধানে আমি json_encode()ওভারের জন্য একটি গুরুতর সম্প্রদায় সমর্থন পেয়েছি serialize()

এবং আমি ব্যক্তিগতভাবে তাদের উভয়ের সাথে একটি সহযোগী অ্যারে পরীক্ষা করেছি, যা দেখায়:

  • serialize() 342 অক্ষর সঞ্চয়
  • json_encode() 285 অক্ষর সঞ্চয়

আমি কেন এটা জিজ্ঞাসা করছি?

আমি কোনও প্রকল্পে থাকাকালীন আমি কোনও পোস্টে মেটা ক্ষেত্রগুলি পুনরাবৃত্তি করতে সঞ্চয় করতে যাচ্ছি। কোথায়:

  • ডেটা মূলত ইংরেজিতে থাকত তবে কখনও কখনও এটি বাংলাও হতে পারে
  • ডেটা সহকারী অ্যারে হবে, 3 স্তর গভীর (আশা করি আমি স্তরগুলি সঠিকভাবে বুঝতে পেরেছি ):
array(
    1 => array(
        'key'=>'value',
        'key2'=>'value'
    ),
    2 => array(
        'key'=>'value',
        'key2'=>'value'
    )
)

আমি postmetaটেবিলের meta_valueক্ষেত্রটি এটির একটিতে যাচাই করেছি longtext, এর অর্থ 4,294,967,295 চর (4 জিবি) দৈর্ঘ্য।

সুতরাং জিনিসগুলি সঞ্চয় করার জন্য আমার একটি শক্ত সমাধান প্রয়োজন need


এক কথায় লিগ্যাসি ওয়ার্ডপ্রেস বিস্তৃত JSON গ্রহণের পূর্বাভাস দেয় এবং ফলস্বরূপ, অনেকগুলি সাইটগুলি API এর উপর নির্ভর করে, তাই এটি এখানে নতুন বিকাশকারীদের বিভ্রান্ত করার জন্য রয়েছে যা এটি পড়ে না যে এটি পড়ে না ....
নেট সিমার

উত্তর:


13

আমি মনে করি, 100% নিশ্চিত নয় যে ডাব্লুপি বিকাশকারীরা এই পদ্ধতির আসল কারণ ছিল, তবে সাধারণ জ্ঞান আমাকে বলে যে সিরিয়ালাইজটি পরিবর্তনশীল প্রকারগুলি সংরক্ষণ করে এবং একটি ত্রুটি সনাক্তকরণে একটি মিনি অন্তর্নির্মিত থাকে, এবং জেসন কেবল স্ট্রিং মানগুলি সঞ্চয় করে { key : value }, তাই যখন আপনি পিএইচপি ফিরে যান আপনার ফর্ম্যাটটি অনুমান করতে হবে, বা এটির জন্য একটি পার্সার তৈরি করতে হবে। এটি আপনাকে আপনার ডেটা হ্যান্ডেল করার জন্য দুটি ভিন্ন উপায় থাকতে বাধ্য করবে: পূর্ববর্তীটি, তথ্যটিকে জসন হিসাবে সংরক্ষণ করার জন্য এবং জসনকে ডিকোড করার পরে এটি সম্পূর্ণ ভিন্ন বস্তু হিসাবে ফিরে আসবে।

আকারের পার্থক্যের এটিই প্রধান কারণ, পিএইচপি কেবল একটি অ্যারে সংরক্ষণ করে না; এটি সিরিয়ালযুক্ত হওয়ার সময় অ্যারের মধ্যে কতগুলি উপাদান ছিল, তাদের ধরণ এবং মানগুলি সংরক্ষণ করছে।

আপনি ডাটাবেসে কেবল মূল মান জোড়া সংরক্ষণ করছেন না তবে আপনি বিভিন্ন ভেরিয়েবল প্রকারের সাথে কোনও বস্তুও সংরক্ষণ করতে পারেন।


আমি উত্তর সবচেয়ে পছন্দ। সত্যই সহায়ক পয়েন্ট।
মায়নুল ইসলাম

1
অনুসন্ধানের তথ্য সহ এই উত্তরে যা ইতিবাচক মনে হচ্ছে তা কেবল জেএসএনের সাথে সরল সিরিয়ালাইজেশনের চেয়ে এটি আরও জটিল (এবং অনিরাপদ) করে তুলেছে। এমনি বলছি. আসল কারণটি অন্য উত্তরে যেমনটি দেওয়া হয়েছে যে সময়টি বৈশিষ্ট্যটি চালু হওয়ার সময় কেবলমাত্র পিএইচপি সিরিয়ালাইজ ফাংশন ছিল, জেএসএন এখনও ছিল না।
hakre

6

জেএসএন এনকোডিংটি পিএইচপি 5.2 তে প্রবর্তিত হয়েছিল, ওয়ার্ডপ্রেসটি বেশ পুরানো, এবং এটি পিএইচপি 4 জন্মগ্রহণ করেছে (এবং এর জন্য ডিজাইন করা হয়েছে)।

ডেটা সিরিয়ালাইজেশন ওয়ার্ডপ্রেসে একটি বিস্তীর্ণ জিনিস, তাই পিএইচপি সিরিয়ালাইজেশন থেকে জেএসওন এনকোডিংয়ে যাওয়া মানে একটি বিশাল পশ্চাদপদ সামঞ্জস্য সমস্যা, এবং যদি আমি ওয়ার্ডপ্রেসকে কিছুটা জানি তবে তা কখনই ঘটবে না।

এটি বলেছিল, আপনি যদি মনে করেন যে পিএসপি সিরিয়ালাইজেশনের চেয়ে জেএসএন এনকোডিং আপনার পক্ষে ভাল তবে কেবল এটি ব্যবহার করুন।

মেটা ফাংশন পোস্ট করার জন্য যদি আপনি একটি স্ট্রিং (এটি আপনার ডেটার জেএসওন-এনকোডড সংস্করণ) পাস করেন তবে ওয়ার্ডপ্রেস এটি স্পর্শ করবে না, তবে আপনাকে পুনরুদ্ধারের ক্ষেত্রে জেএসএন-ডিকোডের ডেটা মনে রাখা দরকার।

ডিবি স্টোরেজ আকারটি যদি আপনার পক্ষে খুব গুরুত্বপূর্ণ হয় তবে এটি সম্ভবত অতিরিক্ত কাজের জন্য মূল্যবান, অন্যথায় কেবল ওয়ার্ডপ্রেসকে যা ব্যবহার করে তা ব্যবহার করুন এবং এটির যত্ন নেবেন না।

আপনার ডেটা সংরক্ষণের জন্য এটি যদি কাস্টম টেবিলের ক্ষেত্রে হয় তবে আপনি মূল্যায়ন করতে পারেন।


3

আমি এটি "মতামত সাপেক্ষে" হিসাবে বন্ধ করতে প্রলুব্ধ কিন্তু আমি মনে করি প্রশ্নের বেশ কয়েকটি ভাল উত্তর রয়েছে। আমি "ইতিহাস" নিয়ে যাচ্ছি।

1) json_encodeপিএইচপি কোর তুলনামূলকভাবে নতুন।

json_encode

(পিএইচপি 5> = 5.2.0, পিইসিএল জেসসন> = 1.2.0) জসন_নকোড - একটি মানের জেএসওএন উপস্থাপনা ফিরিয়ে দেয়

http://php.net/manual/en/function.json-encode.php

json_encodeপ্রথম দিনগুলিতে ওয়ার্ডপ্রেসে বিশ্বাসযোগ্য হত না। এটি 5.2-এ কেবলমাত্র "কোর" পিএইচপি হিসাবে রোল করা হয়েছিল, যদিও এটির অনেক আগে পিসিএল এক্সটেনশন হিসাবে উপলব্ধ ছিল।

দ্বিতীয়ত, আপনি এই ধরনের হিসেবে একটি বস্তু ভোজন যদি WP_Queryবস্তুর মধ্যে json_encodeআপনি একটি পেতে stdClassউপর বস্তু json_decodeserialize/ unserializeঅবজেক্টটি সংরক্ষণ করবে।


+1 টি। তবে আমি "মতামত সাপেক্ষে" আপত্তি জানাই, কারণ আমি প্রমাণগুলি সংযুক্ত করেছি। এবং শেষটি: শ্রেণি সম্পর্কিত সমস্যা: আমি ইতিমধ্যে দ্বিতীয় লিঙ্কটিতে উল্লেখ করেছি (কারণ কেন জেসন_এনকোড নয়)।
মায়িনুল ইসলাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.