পিএইচপি ক্লায়েন্ট লাইব্রেরিটি আপনার পক্ষ থেকে ন্যূনতম কনফিগারেশনের মাধ্যমে গুগল অ্যাডস এপিআই-এর সাথে ইন্টারঅ্যাকশন সহজ করে। তবে, এর পারফরম্যান্স অনেকাংশে নির্ভর করে লাইব্রেরিটি কীভাবে ব্যবহার ও ইন্টিগ্রেট করা হচ্ছে তার উপর।
বেশিরভাগ সাধারণ সেরা অনুশীলন সব ভাষার ক্ষেত্রেই প্রযোজ্য। এই নির্দেশিকাটি পিএইচপি-এর জন্য নির্দিষ্ট পারফরম্যান্স অপ্টিমাইজেশন নিয়ে আলোচনা করে।
প্রোটোবাফ এবং জিআরপিসি বাস্তবায়ন
gRPC এবং Google Ads API অনুরোধ ও প্রতিক্রিয়া বার্তার জন্য Protobuf ব্যবহার করে। এর দুটি বাস্তবায়ন উপলব্ধ আছে (বিশুদ্ধ PHP এবং একটি C এক্সটেনশন), এবং protobuf ও grpc উভয়ের জন্যই C এক্সটেনশনগুলো যথেষ্ট উন্নত সিরিয়ালাইজেশন ও নেটওয়ার্ক পারফরম্যান্স প্রদান করে।
আরও তথ্যের জন্য প্রোটোবাফ গাইড এবং ট্রান্সপোর্ট গাইড দেখুন।
পিএইচপি ইন্টারপ্রেটারের অপারেশন মোড
PHP একটি বহুমুখী স্ক্রিপ্টিং ভাষা এবং ব্যবহারের উপর নির্ভর করে এর বিভিন্ন অপারেশন মোড রয়েছে। স্ট্যান্ডার্ড CGI-এর তুলনায় PHP-FPM (FastCGI Process Manager) বা পারসিস্টেন্ট অ্যাপ্লিকেশন সার্ভারগুলোর একটি উল্লেখযোগ্য সুবিধা হলো, পারসিস্টেন্ট ওয়ার্কার প্রসেসগুলো বিভিন্ন রিকোয়েস্টের মধ্যে ক্যাশ করা বাইটকোড (OPcache-এর মাধ্যমে) এবং রিসোর্স পুনরায় ব্যবহার করতে পারে।
পিএইচপি সংস্করণ
রানটাইম পারফরম্যান্সের উন্নতির সুবিধা পেতে নিয়মিতভাবে পিএইচপি-র নতুন সংস্করণে আপগ্রেড করুন। সমর্থিত পিএইচপি সংস্করণগুলোর তালিকা দেখুন।
অব্যবহৃত গুগল অ্যাডস এপিআই সংস্করণ
ক্লায়েন্ট লাইব্রেরির সকল সংস্করণ একাধিক গুগল অ্যাডস এপিআই সংস্করণ সমর্থন করে। ক্লায়েন্ট লাইব্রেরি দ্বারা সমর্থিত গুগল অ্যাডস এপিআই-এর প্রতিটি সংস্করণের জন্য নির্দিষ্ট প্যাকেজ রয়েছে।
আপনার অ্যাপ্লিকেশনে ব্যবহৃত হয় না এমন গুগল অ্যাডস এপিআই-এর সংস্করণগুলোর জন্য নির্দিষ্ট প্যাকেজগুলো ক্লায়েন্ট লাইব্রেরি থেকে নিরাপদে সরানো যেতে পারে। মেমরি ফুটপ্রিন্ট কমাতে এবং এক্সিকিউশনের গতি বাড়াতে, ক্লায়েন্ট লাইব্রেরিটি প্রোগ্রাম্যাটিকভাবে অব্যবহৃত এপিআই সংস্করণগুলো সরানোর জন্য একটি ইউটিলিটি প্রদান করে।
উদাহরণ
ধরুন, আপনি এমন একটি ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করছেন যা শুধুমাত্র সর্বশেষ API সংস্করণ ( v25 ) ব্যবহার করে, এবং আপনি অব্যবহৃত API সংস্করণগুলির ( v22 , v23 , এবং v24 ) জন্য সমর্থন বন্ধ করতে চান।
আপনার প্রোজেক্টের composer.json ফাইলে, remove-google-ads-api-version-support নামে একটি কম্পোজার স্ক্রিপ্ট সংজ্ঞায়িত করুন, যা ApiVersionSupport এর ক্লায়েন্ট লাইব্রেরি দ্বারা প্রদত্ত ইউটিলিটি ব্যবহার করে:
"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 unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
-maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor
# Use the Composer script to remove the unused versions
# v22, v23, and
# v24 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
22 \
23 \
24
# Output the vendor folder size and the list of Google Ads API versions that are
# supported after removing support for unused Google Ads API versions.
echo "# Supported Google Ads API versions:"
find ./vendor/googleads/google-ads-php/src/Google/Ads/GoogleAds/V* \
-maxdepth 0 | grep -oE 'V[0-9]+$'
echo "# Vendor folder size:"
du -sh ./vendor
নিম্নলিখিত নমুনা এক্সিকিউশন আউটপুটটি ফাইলের আকার হ্রাস দেখাচ্ছে, যেখানে V25 একমাত্র অবশিষ্ট সমর্থিত সংস্করণ হিসেবে রয়েছে:
# Supported Google Ads API versions:
V22
V23
V24
V25
# Vendor folder size:
135M ./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
Removing support for the version 24 of Google Ads API...
Done
# Supported Google Ads API versions:
V25
# Vendor folder size:
60M ./vendor
উন্নয়ন বনাম উৎপাদন
PHP একটি ইন্টারপ্রেটেড ল্যাঙ্গুয়েজ যা নির্দেশাবলী কার্যকর করার আগে সেগুলোকে কম্পাইল করে। ডেভেলপমেন্টের সময় এটি সুবিধাজনক, কারণ তখন সোর্স ফাইল ঘন ঘন পরিবর্তিত হয় এবং এক্সিকিউশন টাইম ততটা গুরুত্বপূর্ণ থাকে না। প্রোডাকশন পরিবেশে, স্থিতিশীলতা এবং পারফরম্যান্সই প্রধান বিবেচ্য বিষয় হয়ে ওঠে।
ক্যাশে
ক্যাশিং করার পরামর্শ দেওয়া হয়, কারণ এটি প্রি-কম্পাইল করা স্ক্রিপ্ট বাইটকোডকে শেয়ার্ড মেমরিতে সংরক্ষণ করে পারফরম্যান্স উন্নত করে এবং স্থিতিশীলতা বাড়ায়।
OPcache হলো আদর্শ সমাধান এবং এটি ডিফল্টভাবে PHP-এর সাথে অন্তর্ভুক্ত থাকে।
অটোলোড
অটোলোডিং প্রি-কম্পাইলড ক্লাস ম্যাপ তথ্য লোড করার মাধ্যমে পারফরম্যান্স ও স্থিতিশীলতা উন্নত করে।
পিএইচপি ক্লায়েন্ট লাইব্রেরিটি অটোলোডিংয়ের জন্য পিএসআর-৪ (PSR-4) মেনে চলে এবং এর ডেফিনিশনটি নিজের composer.json ফাইলের অংশ হিসেবে প্রদান করে। এরপর, প্রোডাকশন বিল্ডে --optimize-autoloader বা --classmap-authoritative মতো ডেডিকেটেড কম্পোজার সিএলআই (CLI) অপশনগুলো কোনো অতিরিক্ত কনফিগারেশন ছাড়াই ব্যবহার করা যায়।
লগিং
প্রোডাকশনে লগারকে ERROR বা WARNING মতো উচ্চতর থ্রেশহোল্ডে সেট করলে তা I/O ওভারহেড এবং মেমরি খরচ কমাতে সাহায্য করে।
আরও তথ্যের জন্য লগিং নির্দেশিকা দেখুন।
ডিবাগিং এবং প্রোফাইলিং
প্রোডাকশনে ডিবাগার এবং প্রোফাইলার এক্সটেনশন (যেমন Xdebug) নিষ্ক্রিয় করুন, কারণ এগুলো এক্সিকিউশন ওভারহেড তৈরি করে।
প্রিলোড
PHP 7.4 থেকে, সার্ভার চালু হওয়ার সময় স্ক্রিপ্টগুলোকে মেমরিতে আগে থেকে লোড করার জন্য OPcache preloading ব্যবহার করা যায়, যা সাধারণ OPcache ক্যাশিংয়ের চেয়ে এক ধাপ এগিয়ে।
একটি প্রিলোড স্ক্রিপ্ট অবশ্যই আপনার অ্যাপ্লিকেশনের জন্য বিশেষভাবে ডিজাইন করতে হবে। পিএইচপি ক্লায়েন্ট লাইব্রেরি কোনো জেনেরিক প্রিলোড স্ক্রিপ্ট সরবরাহ করে না, কারণ মেমরি ব্যবহার এবং পারফরম্যান্স লাভের মধ্যেকার ভারসাম্য প্রতিটি প্রজেক্ট এবং ডেপ্লয়মেন্ট এনভায়রনমেন্টের জন্য স্বতন্ত্র।