পিএইচপি ক্লায়েন্ট লাইব্রেরিটি আপনার পক্ষ থেকে ন্যূনতম কনফিগারেশনের মাধ্যমে গুগল অ্যাডস এপিআই-এর সাথে ইন্টারঅ্যাকশন সহজ করে। তবে, এর পারফরম্যান্স অনেকাংশে নির্ভর করে লাইব্রেরিটি কীভাবে ব্যবহার ও ইন্টিগ্রেট করা হচ্ছে তার উপর।
এই সেরা অনুশীলনগুলোর বেশিরভাগই সব ভাষার জন্য প্রযোজ্য। এই নির্দেশিকায় পিএইচপি-র জন্য নির্দিষ্ট অনুশীলনগুলো নিয়ে আলোচনা করা হয়েছে।
প্রোটোবাফ বাস্তবায়ন
gRPC এবং Google Ads API অনুরোধ ও প্রতিক্রিয়া বার্তার জন্য Protobuf ব্যবহার করে। এর দুটি বাস্তবায়ন উপলব্ধ আছে, যদিও C-তে লেখাটির কর্মক্ষমতা ভালো।
আরও তথ্যের জন্য প্রোটোবাফ নির্দেশিকা দেখুন।
পিএইচপি ইন্টারপ্রেটারের অপারেশন মোড
PHP একটি বহুমুখী স্ক্রিপ্টিং ভাষা এবং ব্যবহারের উপর নির্ভর করে এর বিভিন্ন অপারেশন মোড রয়েছে। PHP CGI (কমন গেটওয়ে ইন্টারফেস)-এর একটি উল্লেখযোগ্য সুবিধা হলো এটি বিভিন্ন এক্সিকিউশনের মধ্যে রিসোর্স শেয়ার করতে পারে।
পিএইচপি সংস্করণ
নিয়মিতভাবে পিএইচপি-র নতুন সংস্করণে আপগ্রেড করা একটি ভালো অভ্যাস, কারণ এতে সাধারণত সামগ্রিকভাবে উন্নততর পারফরম্যান্স পাওয়া যায়। সমর্থিত পিএইচপি সংস্করণগুলোর তালিকা ।
অব্যবহৃত গুগল অ্যাডস এপিআই সংস্করণ
ক্লায়েন্ট লাইব্রেরির সকল সংস্করণ একাধিক গুগল অ্যাডস এপিআই সংস্করণ সমর্থন করে। ক্লায়েন্ট লাইব্রেরি দ্বারা সমর্থিত গুগল অ্যাডস এপিআই-এর প্রতিটি সংস্করণের জন্য নির্দিষ্ট প্যাকেজ রয়েছে।
গুগল অ্যাডস এপিআই-এর যে সংস্করণগুলো ব্যবহৃত হয় না, সেগুলোর জন্য নির্ধারিত প্যাকেজগুলো ক্লায়েন্ট লাইব্রেরি থেকে নিরাপদে সরিয়ে ফেলা যেতে পারে। যেহেতু এটি এক্সিকিউশনের গতি বাড়াতে বা মেমরি ফুটপ্রিন্ট কমাতে সহায়ক হতে পারে, তাই ক্লায়েন্ট লাইব্রেরিটি প্রোগ্রাম্যাটিকভাবে এই কাজটি করার জন্য ইউটিলিটি সরবরাহ করে।
উদাহরণ
ধরা যাক, আপনি এমন একটি ক্লায়েন্ট লাইব্রেরি তৈরি করছেন যা শুধুমাত্র সর্বশেষ API সংস্করণ v24 ব্যবহার করছে, এবং আপনি অব্যবহৃত API সংস্করণ v23 ও v22 এর সমর্থন বন্ধ করতে চান।
প্রজেক্টের composer.json ফাইলে, ApiVersionSupport ক্লাসের মধ্যে remove-google-ads-api-version-support নামের একটি কম্পোজার স্ক্রিপ্ট সংজ্ঞায়িত করুন, যা ক্লায়েন্ট লাইব্রেরির ইউটিলিটি ব্যবহার করবে।
"scripts": {
"remove-google-ads-api-version-support": [
"Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
]
}
তারপর, ভার্সন নম্বরগুলোকে প্যারামিটার হিসেবে ব্যবহার করে কম্পোজার স্ক্রিপ্টটি চালান এবং কিছু স্ট্যাটাস মেসেজ প্রিন্ট করুন:
# Change the current directory to the project directory.
cd /path/to/the/project
# Install the project.
composer install
# Output the vendor folder size and the list of Google Ads API versions that are
# supported before removing support for Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* -maxdepth 0 | grep -o '..$'
echo "# Vendor folder size:"
du -sh ./vendor
# Use the Composer script to remove the unused versions v22 and v23 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 22 23
# Output the vendor folder size and the list of Google Ads API versions that are
# supported after removing support for Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* -maxdepth 0 | grep -o '..$'
echo "# Vendor folder size:"
du -sh ./vendor
নীচের নমুনা এক্সিকিউশন আউটপুট থেকে দেখা যাচ্ছে যে ফাইলের আকার ৫০ মেগাবাইট কমেছে এবং একমাত্র অবশিষ্ট সমর্থিত সংস্করণটি হলো V24 )।
# Supported Google Ads API versions:
V22
V23
V24
# Vendor folder size:
110M ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 22 of Google Ads API...
Done
Removing support for the version 23 of Google Ads API...
Done
# Supported Google Ads API versions:
V24
# Vendor folder size:
60M ./vendor
উন্নয়ন বনাম উৎপাদন
PHP একটি ইন্টারপ্রেটেড ল্যাঙ্গুয়েজ, কারণ এটি নির্দেশাবলী কার্যকর করার আগে সেগুলোকে প্রথমে কম্পাইল করে। এটি সাধারণত সুবিধাজনক, কারণ ডেভেলপমেন্টের সময় সোর্স কোড প্রায়শই পরিবর্তিত হয় এবং এক্সিকিউশন টাইম ততটা গুরুত্বপূর্ণ নয়। তবে, প্রোডাকশনের সময় পরিস্থিতিটা ঠিক এর বিপরীত, কারণ তখন স্থিতিশীলতা এবং পারফরম্যান্সই প্রধান বিবেচ্য বিষয় হয়ে ওঠে।
ক্যাশে
ক্যাশিং একটি প্রচলিত এবং অত্যন্ত সুপারিশযোগ্য পদ্ধতি, কারণ এটি প্রি-কম্পাইল করা স্ক্রিপ্ট নির্দেশাবলী সংরক্ষণ করার মাধ্যমে পারফরম্যান্স ও স্থিতিশীলতা উভয়ই উন্নত করে।
OPcache হলো সবচেয়ে বেশি ব্যবহৃত সমাধান এবং এটি ডিফল্টভাবে উপলব্ধ থাকে।
অটোলোড
অটোলোড প্রচলিত, কারণ এটি ক্লাস সম্পর্কিত প্রি-কম্পাইল করা তথ্য লোড করার মাধ্যমে পারফরম্যান্স ও স্থিতিশীলতা উভয়ই উন্নত করে।
পিএইচপি ক্লায়েন্ট লাইব্রেরিটি অটোলোডিংয়ের জন্য পিএসআর-৪ (PSR-4) মেনে চলে এবং এর সংজ্ঞাটি composer.json ফাইলের অংশ হিসেবে প্রদান করে। ফলে, কম্পোজারের নির্দিষ্ট অপশনগুলো, যেমন --optimize-autoloader বা --classmap-authoritative , কোনো অতিরিক্ত কনফিগারেশন ছাড়াই ব্যবহার করা যায়।
লগিং
লগারকে ERROR মতো উচ্চ স্তরে সেট করলে তা এক্সিকিউশন টাইম ওভারহেড এবং মেমরি কনসাম্পশন কমাতে সাহায্য করতে পারে।
আরও তথ্যের জন্য লগিং নির্দেশিকা দেখুন।
ডিবাগিং এবং প্রোফাইলিং
আমরা ডিবাগার এবং প্রোফাইলার টুলগুলো নিষ্ক্রিয় করার পরামর্শ দিই, কারণ এগুলোর কারণে সাধারণত কিছু অতিরিক্ত সময় লাগে।
প্রিলোড
PHP 7.4 থেকে, OPcache প্রি-লোডিং ব্যবহার করে স্ক্রিপ্টগুলোকে মেমরিতে আগে থেকেই লোড করা যায়, যা সাধারণ ক্যাশিংয়ের চেয়ে এক ধাপ এগিয়ে।
এই বৈশিষ্ট্যটির সুবিধা নেওয়ার জন্য একটি স্ক্রিপ্ট ডিজাইন করতে হয়, কিন্তু পিএইচপি ক্লায়েন্ট লাইব্রেরি তা করে না, কারণ OPcache প্রি-লোডিং বাস্তবায়নের কোনো সাধারণ উপায় নেই এবং মেমরি ব্যবহার ও পারফরম্যান্স লাভের মধ্যেকার ভারসাম্য প্রতিটি নির্দিষ্ট প্রজেক্ট ও এক্সিকিউশনের ওপর ব্যাপকভাবে নির্ভরশীল।