عملکرد

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

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

پیاده‌سازی‌های Protobuf و gRPC

Protobuf توسط gRPC و API گوگل ادز برای پیام‌های درخواست و پاسخ استفاده می‌شود. دو پیاده‌سازی برای آن موجود است (PHP خالص و یک افزونه C)، و افزونه‌های C برای هر دو protobuf و grpc به طور قابل توجهی سریال‌سازی و عملکرد شبکه بهتری را ارائه می‌دهند.

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

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

PHP یک زبان اسکریپت‌نویسی همه‌کاره است و بسته به نوع استفاده، حالت‌های عملیاتی مختلفی دارد. PHP-FPM (FastCGI Process Manager) یا سرورهای برنامه‌ی پایدار، مزیت قابل توجهی نسبت به CGI استاندارد دارند، زیرا فرآیندهای کاری پایدار می‌توانند از بایت‌کدهای ذخیره‌شده (از طریق OPcache) و منابع در درخواست‌های مختلف، دوباره استفاده کنند.

نسخه پی اچ پی

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

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

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

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

مثال

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

در فایل 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
# 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 همراه است.

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

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

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

ثبت وقایع

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

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

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

افزونه‌های اشکال‌زدا و پروفایلر (مانند Xdebug) را در محیط عملیاتی غیرفعال کنید زیرا سربار اجرایی قابل توجهی ایجاد می‌کنند.

پیش بارگذاری

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

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