PHP ক্লায়েন্ট লাইব্রেরি আপনার তরফ থেকে ন্যূনতম কনফিগারেশনের মাধ্যমে Google Ads API-এর সাথে ইন্টার্যাকশন সহজ করে তোলে। তবে, লাইব্রেরি কীভাবে ব্যবহার ও ইন্টিগ্রেট করা হয়েছে তার উপর পারফর্ম্যান্স উল্লেখযোগ্যভাবে নির্ভর করে।
অধিকাংশ সাধারণ পেশাদার পদ্ধতি সব ভাষার ক্ষেত্রে প্রযোজ্য। এই গাইডে PHP-এর জন্য নির্দিষ্ট পারফর্ম্যান্স অপ্টিমাইজেশন কভার করা হয়েছে।
Protobuf এবং gRPC ইমপ্লিমেন্টেশন
gRPC এবং Google Ads API-এর মাধ্যমে অনুরোধ ও উত্তর মেসেজের জন্য
Protobuf ব্যবহার করা হয়। দুটি ইমপ্লিমেন্টেশন উপলভ্য (খাঁটি PHP এবং একটি
C এক্সটেনশন) এবং protobuf ও grpc উভয়ের জন্যই C এক্সটেনশন
উল্লেখযোগ্যভাবে আরও ভালো সিরিয়ালাইজেশন এবং নেটওয়ার্ক পারফর্ম্যান্স প্রদান করে।
আরও তথ্যের জন্য Protobuf গাইড এবং ট্রান্সপোর্ট গাইড দেখুন।
PHP ইন্টারপ্রেটারের অপারেশন মোড
PHP হল একটি বহুমুখী স্ক্রিপ্টিং ভাষা এবং ব্যবহারের উপর নির্ভর করে এর বিভিন্ন অপারেশন মোড আছে। PHP-FPM (FastCGI প্রসেস ম্যানেজার) বা পারসিস্টেন্ট অ্যাপ্লিকেশন সার্ভারের স্ট্যান্ডার্ড CGI-এর তুলনায় উল্লেখযোগ্য সুবিধা আছে কারণ পারসিস্টেন্ট ওয়ার্কার প্রসেস ক্যাশে করা বাইটকোড (OPcache-এর মাধ্যমে) এবং রিসোর্স বিভিন্ন অনুরোধ জুড়ে আবার ব্যবহার করতে পারে।
PHP ভার্সন
রানটাইম পারফর্ম্যান্স উন্নতি থেকে সুবিধা পেতে নিয়মিতভাবে আরও নতুন PHP ভার্সনে আপগ্রেড করুন। কাজ করে এমন PHP ভার্সনের তালিকা চেক করুন।
Google Ads API-এর অব্যবহৃত ভার্সন
ক্লায়েন্ট লাইব্রেরির সব ভার্সন একাধিক Google Ads API ভার্সনে কাজ করে। ক্লায়েন্ট লাইব্রেরির মাধ্যমে কাজ করে এমন Google Ads API-এর প্রতিটি ভার্সনের জন্য নির্দিষ্ট প্যাকেজ আছে।
আপনার অ্যাপ্লিকেশন ব্যবহার করে না এমন Google Ads API-এর ভার্সনের জন্য নির্দিষ্ট প্যাকেজগুলি ক্লায়েন্ট লাইব্রেরি থেকে নিরাপদে সরানো যেতে পারে। মেমরি ফুটপ্রিন্ট কমাতে এবং এক্সিকিউশন স্পিড বাড়াতে, ক্লায়েন্ট লাইব্রেরি প্রোগ্রাম্যাটিকভাবে অব্যবহৃত API ভার্সন সরানোর জন্য একটি ইউটিলিটি প্রদান করে।
উদাহরণ
ধরে নিন, আপনি এমন একটি ক্লায়েন্ট অ্যাপ্লিকেশন প্রয়োগ করছেন যা শুধুমাত্র লেটেস্ট
API ভার্সন (v26) ব্যবহার করে এবং আপনি ব্যবহার না করা
API ভার্সনের (v23,
v24 এবং v25) জন্য সহায়তা সরিয়ে দিতে চান।
আপনার প্রোজেক্টের composer.json ফাইলে, একটি Composer স্ক্রিপ্ট (নাম
remove-google-ads-api-version-support) সংজ্ঞায়িত করুন যা ApiVersionSupport-এ ক্লায়েন্ট লাইব্রেরির
প্রদান করা ইউটিলিটি ব্যবহার করে:
"scripts": {
"remove-google-ads-api-version-support": [
"Google\\Ads\\GoogleAds\\Util\\ApiVersionSupport::remove"
]
}
তারপরে, প্যারামিটার হিসেবে ভার্সন নম্বর সহ Composer স্ক্রিপ্ট রান করান এবং স্ট্যাটাস মেসেজ প্রিন্ট করুন:
# 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
# v23, v24, and
# v25 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- \
23 \
24 \
25
# 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
নিম্নলিখিত স্যাম্পেল এক্সিকিউশন আউটপুট ফাইলের সাইজ কমানো দেখায়, যেখানে
V26 হল একমাত্র অবশিষ্ট কাজ করে এমন ভার্সন:
# Supported Google Ads API versions:
V23
V24
V25
V26
# Vendor folder size:
135M ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 23 of Google Ads API...
Done
Removing support for the version 24 of Google Ads API...
Done
Removing support for the version 25 of Google Ads API...
Done
# Supported Google Ads API versions:
V26
# Vendor folder size:
60M ./vendor
ডেভেলপমেন্ট বনাম প্রোডাকশন
PHP হল একটি ইন্টারপ্রিটেড ল্যাঙ্গুয়েজ যা নির্দেশাবলী কার্যকর করার আগে সেগুলি কম্পাইল করে। ডেভেলপমেন্টের সময় এটি সুবিধাজনক, যখন সোর্স ফাইল ঘন ঘন পরিবর্তন হয় এবং এক্সিকিউশন টাইম কম গুরুত্বপূর্ণ হয়। প্রোডাকশন এনভায়রনমেন্টে, স্থায়িত্ব ও পারফর্ম্যান্সই প্রধান বিষয় হয়ে ওঠে।
ক্যাশে
ক্যাশিং সাজেস্ট করা হয় কারণ এটি পারফর্ম্যান্স উন্নত করে এবং শেয়ার করা মেমরিতে আগে থেকে কম্পাইল করা স্ক্রিপ্ট বাইটকোড সেভ করে স্টেবিলিটি বাড়ায়।
OPcache হল স্ট্যান্ডার্ড সমাধান এবং এটি ডিফল্ট হিসেবে PHP-এর সাথে বান্ডেল করা থাকে।
নিজে থেকে ব্যালেন্স ভরা
অটোলোডিং প্রি-কম্পাইল করা ক্লাস ম্যাপের তথ্য লোড করে পারফর্ম্যান্স ও স্থিতিশীলতা উন্নত করে।
PHP ক্লায়েন্ট লাইব্রেরি অটোলোডিংয়ের জন্য PSR-4 মেনে চলে এবং
এর composer.json ফাইলের অংশ হিসেবে সংজ্ঞা প্রদান করে। --optimize-autoloader বা --classmap-authoritative-এর মতো নির্দিষ্ট
Composer CLI বিকল্প, প্রোডাকশন বিল্ডে
আউট অফ দ্য বক্স হিসেবে ব্যবহার করা
যেতে পারে।
লগিং
প্রোডাকশনে লগারকে ERROR বা WARNING-এর মতো উচ্চ থ্রেশহোল্ডে সেট করলে
I/O ওভারহেড এবং মেমরি খরচ কমাতে সাহায্য করে।
আরও তথ্যের জন্য লগিং সংক্রান্ত নির্দেশিকা দেখুন।
ডিবাগিং ও প্রোফাইলিং
প্রোডাকশনে ডিবাগার এবং প্রোফাইলার এক্সটেনশন (যেমন Xdebug) বন্ধ করুন কারণ তারা যথেষ্ট এক্সিকিউশন ওভারহেড প্রবর্তন করে।
প্রিলোড
PHP 7.4 থেকে, সার্ভার স্টার্টআপে মেমরিতে স্ক্রিপ্ট প্রিলোড করতে OPcache প্রিলোডিং ব্যবহার করা যেতে পারে, যা স্ট্যান্ডার্ড OPcache ক্যাশিংয়ের থেকে এক ধাপ এগিয়ে।
আপনার অ্যাপ্লিকেশনের জন্য বিশেষভাবে একটি প্রিলোড স্ক্রিপ্ট ডিজাইন করতে হবে। PHP ক্লায়েন্ট লাইব্রেরি কোনও সাধারণ প্রিলোড স্ক্রিপ্ট প্রদান করে না কারণ মেমরির ব্যবহার ও পারফর্ম্যান্সের মধ্যে যে ট্রেড-অফ হয় তা প্রতিটি প্রোজেক্ট ও ডেপ্লয়মেন্ট এনভায়রনমেন্টের জন্য নির্দিষ্ট।