কেন পাবলিক ওয়েব অ্যাপ্লিকেশনগুলি কনফিগারেশনের জন্য ini ফাইল ব্যবহার করবেন না


10

প্রায় প্রতিটি সরকারী সিএমএসে ডেটাবেস সেটিংস ইত্যাদির জন্য একটি। Php কনফিগারেশন ফাইল ব্যবহার করে। উদাহরণস্বরূপ ওয়ার্ডপ্রেস স্বয়ংক্রিয়ভাবে একটি। Php কনফিগার ফাইল তৈরি করে যখন আপনি এটি ইনস্টল করেন।

কেন তারা কেবল একটি .ini ফাইল ব্যবহার করবেন না? পিএইচপি এর মধ্যে ইতিমধ্যে parse_ini_file () রয়েছে এবং আমি নিশ্চিত যে অন্যান্য ভাষায় একই রকম ফাংশন রয়েছে।

উত্তর:


9

বিশেষত পিএইচপি সহ; .ini ফাইল এবং একটি .conf.php ফাইলের মধ্যে পার্থক্য নগণ্য।

কনফিগারেশনের জন্য সরাসরি পিএইচপি ব্যবহারের কেবলমাত্র একটি কনফিগারেশনের জন্য একটি সু-সংজ্ঞায়িত, পোর্টেবল সিনট্যাক্সের সাথে সম্পর্কিত হওয়ার পৃথক সুবিধা রয়েছে এবং কনফিগারেশন ফাইলটি সঠিকভাবে কোড হওয়ার বিষয়টি মাঝে মাঝে দরকারী।

তার তুলনায়; একটি আইএনআই ফাইলের অফার করার মতো কিছুই নেই; এবং include, requireএবং require_onceসমস্ত সুপরিচিত এবং (বেশিরভাগ) ভাল বোঝা হয়।


relate to one well-defined, portable syntax for configurationআমি তা পাই না। আইএনআই ফাইলগুলির পাশাপাশি একটি ভাল সংজ্ঞাযুক্ত এবং পোর্টেবল সিনট্যাক্স রয়েছে। প্রতিটি .conf.phpফাইলের নিজস্ব কাঠামো থাকে, বেশিরভাগ অ্যারে ভিত্তিক হয় তবে এটি কোনও আইএনআই ফাইলের চেয়ে আলাদা নয়।
ইয়ানিস

7
এছাড়াও মনে রাখবেন যে একটি পিএইচপি ফাইল কিছু প্রাথমিক সুরক্ষা দিতে পারে। জুমলা যদি .iniকনফিগারেশন সংরক্ষণের জন্য এক্সএমএল বা ফাইলগুলি ব্যবহার করে তবে সন্দেহ নেই যে কনফিগারেশনটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য যেখানে প্রচুর ভুল কনফিগার্ড দৃষ্টান্তগুলি চলছিল যা সাধারণত ভাল জিনিস নয়। পিএইচপি ফাইলগুলির সাথে এটি কোনও দর্শনার্থীর কাছে এর বিষয়বস্তু পরিবেশন করার জন্য কোনও সার্ভারের ভুল কনফিগার করা খুব বিরল হতে চলেছে।
টম মার্থেনাল

4

সাধারণত আমি পছন্দ করি .iniবা এক্সএমএল কনফিগারেশন ফাইলগুলি বলি । বৃহত্তর সিস্টেমে প্রায়শই বিকাশকারী ছাড়া অন্য কারও জন্য একটি কনফিগারেশন মান, সম্ভবত একটি ডিবিএ বা সিসাদমিন পরিবর্তন করতে হবে। আমি জানি বেশিরভাগ ডিবিএ এবং সিসাদমিনে কোনও সাধারণ পিএইচপি স্ক্রিপ্টের মাধ্যমে নেভিগেট করতে কোনও সমস্যা হবে না, তবে তারা পছন্দ না করলে আমি পছন্দ করব। সেখানে একটি ছোট ভুল পুরো প্রয়োগটিকে বেশ কয়েকটি উপায়ে ক্ষতি করতে পারে।

তবে ছোট সিস্টেমে কনফিগারেশনের জন্য পিএইচপি স্ক্রিপ্টগুলি ব্যবহার করা অত্যন্ত সুবিধাজনক। আমি আজ AWS SDK এর সাথে খেলছিলাম , যা কনফিগারেশনের জন্য পিএইচপি স্ক্রিপ্টও ব্যবহার করে:

CFCredentials::set(array(
    'development' => array(
        'key' => 'xxx',
        'secret' => 'xxxx',
        'default_cache_config' => sys_get_temp_dir(),
        'certificate_authority' => true
    ),
    '@default' => 'development'
));    

একটি হার্ডকডিংয়ের পরিবর্তে default_cache_config, আমি সিস্টেমটি অস্থায়ী করে যাচ্ছি এবং এটি স্ক্রিপ্টটি মোতায়েন করা প্রতিটি সিস্টেমে কাজ করবে। এই স্ক্রিপ্টটি ধারণার একটি ছোট প্রমাণ যা প্রায় 10 বিকাশকারীকে পাস করা হবে এবং আমি চাই যে তারা এটিকে এটি চালিত করে, বহুলাংশে চিন্তাভাবনা করার পরেও। প্রোটোটাইপটি যদি বিকশিত হয়, তবে আমি এটি আমার এক্সএমএল কনফিগারেশন ক্লাসের সাথে হার্ডওয়ার করব (এবং সম্ভবত ফাইল সিস্টেম ক্যাশে নির্ভর করবে না)।


"সেখানে একটি ছোট ভুল পুরো প্রয়োগটিকে বেশ কয়েকটি উপায়ে ক্ষতি করতে পারে।" যদিও আইএনআইয়ের জন্য অবৈধ মানগুলি হবে না? বা এক্সএমএল কোন বন্ধুবান্ধব?
whatsisname

@ ওয়াটসিসনাম সাধারণত যদি একটি ভুলভাবে সেট করা কনফিগারেশন মান আপনার সিস্টেমকে ব্রেক করে তবে আপনার সমস্যা অন্য কোথাও রয়েছে। আমি স্ক্রিপ্ট কনফিগারেশনে একটি অনিচ্ছাকৃত কোডের আরও কিছু ভাবছিলাম যা চূড়ান্ত কিছু করে, এমন কিছু যা আমি একাধিকবার অভিজ্ঞতা করেছি। কোনও আইএনআই / এক্সএমএল ফাইল দিয়ে এটি অসম্ভব, মূল বিষয়টি হ'ল স্ক্রিপ্ট কনফিগারেশন এমন কিছু নয় যা আপনি অ বিকাশকারীদের সাথে ভাগ করতে চান।
ইয়ানিস

3

উত্তরটি খুব সহজ: এটি পরিচালনা করার জন্য একটি কনফিডেফের মূলত শূন্য কাজ প্রয়োজন। এটি কেবল অন্য উত্স ফাইল।


0

ক্যাচিং ছাড়া গতিও কারণ হতে পারে। প্রয়োজনে পিএইচপি কনফিগারেশন স্বচ্ছভাবে অপকড-ক্যাশে করা যেতে পারে। আইএনআই ফাইলটি প্রতিবার পড়ার সময় পাঠ্য-বিশ্লেষণ করা দরকার এবং আপনাকে নিজেই ক্যাশে তৈরি করতে হবে। ছোট ফাইলগুলির জন্য এটি ঠিক আছে, তবে প্রতিটি অনুরোধে শত শত লাইন পার্স করা হলেও এটি কয়েক মিলিয়ন সেকেন্ডে বাড়িয়ে তুলতে পারে, এটি 200 মিমি অপ্টিমাইজড ওয়েবের জন্য যথেষ্ট।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.