عملکرد

کتابخانه کلاینت PHP تعامل با API تبلیغات گوگل را با حداقل پیکربندی از طرف شما آسان می‌کند. با این حال، عملکرد به شدت به نحوه استفاده و ادغام کتابخانه بستگی دارد.

بیشتر این بهترین شیوه‌ها برای همه زبان‌ها قابل اجرا هستند. این راهنما به مواردی می‌پردازد که مختص PHP هستند.

پیاده‌سازی پروتوباف

پروتوباف توسط gRPC و API گوگل ادز برای پیام‌های درخواست و پاسخ استفاده می‌شود. دو پیاده‌سازی برای آن موجود است، هرچند پیاده‌سازی نوشته شده با زبان C عملکرد بهتری دارد.

برای اطلاعات بیشتر به راهنمای Protobuf مراجعه کنید.

حالت عملیاتی مفسر PHP

PHP یک زبان اسکریپت‌نویسی همه‌کاره است و بسته به نوع استفاده ، حالت‌های عملیاتی زیادی دارد. PHP CGI (رابط دروازه مشترک) یک مزیت قابل توجه دارد زیرا می‌تواند منابع را بین اجراها به اشتراک بگذارد.

نسخه پی اچ پی

بهتر است که مرتباً به نسخه جدیدتر PHP ارتقا دهید زیرا معمولاً عملکرد کلی بهتری دارد. فهرست نسخه‌های پشتیبانی‌شده PHP .

نسخه‌های استفاده نشده API تبلیغات گوگل

تمام نسخه‌های کتابخانه کلاینت از چندین نسخه API گوگل ادز پشتیبانی می‌کنند. برای هر نسخه از API گوگل ادز که توسط کتابخانه کلاینت پشتیبانی می‌شود، بسته‌های اختصاصی برای آن نسخه وجود دارد.

بسته‌های اختصاص داده شده به نسخه‌های API گوگل ادز که استفاده نمی‌شوند را می‌توان با خیال راحت از کتابخانه کلاینت حذف کرد. از آنجا که این کار می‌تواند برای سرعت بخشیدن به اجرا یا کاهش فضای اشغال شده توسط حافظه مفید باشد، کتابخانه کلاینت ابزارهایی را برای انجام این کار به صورت برنامه‌نویسی ارائه می‌دهد.

مثال

فرض کنید در حال پیاده‌سازی کتابخانه کلاینتی هستید که فقط از آخرین نسخه API یعنی v23 استفاده می‌کند و می‌خواهید پشتیبانی از نسخه‌های API استفاده نشده یعنی v22 و v21 را حذف کنید.

در فایل 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 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 v21 and v22 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 21 22

# 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

خروجی اجرای نمونه زیر نشان‌دهنده کاهش حجم فایل به میزان ۵۰ مگابایت است و تنها نسخه پشتیبانی‌شده باقی‌مانده V23 است:

# Supported Google Ads API versions:
V21
V22
V23
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 21 of Google Ads API...
Done
Removing support for the version 22 of Google Ads API...
Done
# Supported Google Ads API versions:
V23
# Vendor folder size:
60M     ./vendor

توسعه در مقابل تولید

PHP یک زبان مفسری است به این معنی که ابتدا دستورالعمل‌ها را قبل از اجرا کامپایل می‌کند. این معمولاً یک مزیت است زیرا در طول زمان توسعه، منابع اغلب تغییر می‌کنند در حالی که زمان اجرا چندان مهم نیست. با این حال، در زمان تولید عکس این قضیه صادق است زیرا پایداری و عملکرد به دغدغه‌های اصلی تبدیل می‌شوند.

حافظه پنهان

ذخیره سازی داده (caching) رایج است و اکیداً توصیه می‌شود زیرا با ذخیره دستورالعمل‌های اسکریپت از پیش کامپایل شده، هم عملکرد را بهبود می‌بخشد و هم پایداری را افزایش می‌دهد.

OPcache رایج‌ترین راهکار مورد استفاده است و به صورت پیش‌فرض در دسترس است.

بارگذاری خودکار

بارگذاری خودکار رایج است زیرا با بارگذاری اطلاعات از پیش کامپایل شده در مورد کلاس‌ها، هم عملکرد را بهبود می‌بخشد و هم پایداری را افزایش می‌دهد.

کتابخانه کلاینت PHP برای بارگذاری خودکار با PSR-4 مطابقت دارد و تعریف آن را به عنوان بخشی از فایل composer.json ارائه می‌دهد. گزینه‌های اختصاصی Composer ، مانند --optimize-autoloader یا --classmap-authoritative ، می‌توانند به صورت آماده استفاده شوند.

ثبت وقایع

تنظیم لاگرها روی سطح بالایی مانند ERROR می‌تواند به کاهش سربار زمان اجرا و مصرف حافظه کمک کند.

برای اطلاعات بیشتر به راهنمای ثبت وقایع مراجعه کنید.

اشکال‌زدایی و پروفایلینگ

توصیه می‌کنیم ابزارهای اشکال‌زدا و پروفایلر را غیرفعال کنید زیرا معمولاً زمان اجرای بالایی دارند.

پیش بارگذاری

از PHP 7.4 به بعد، می‌توان از پیش‌بارگذاری OPcache برای پیش‌بارگذاری اسکریپت‌ها در حافظه استفاده کرد که یک قدم فراتر از ذخیره‌سازی معمولی است.

برای استفاده از این ویژگی باید یک اسکریپت طراحی شود، اما کتابخانه کلاینت PHP این قابلیت را ندارد، زیرا هیچ روش عمومی برای پیاده‌سازی پیش‌بارگذاری OPcache وجود ندارد و بده‌بستان بین استفاده از حافظه و افزایش عملکرد، کاملاً مختص یک پروژه و اجرای آن است.