الأداء

تسهّل مكتبة برامج PHP التفاعلات مع واجهة برمجة التطبيقات Google Ads API بأقل قدر من الإعداد من جانبك. ومع ذلك، يعتمد الأداء بشكل كبير على كيفية استخدام المكتبة ودمجها.

تنطبق معظم أفضل الممارسات هذه على جميع اللغات. يتناول هذا الدليل تلك التي تخص لغة PHP.

تنفيذ Protobuf

يتم استخدام Protobuf من خلال gRPC وGoogle Ads API لرسائل الطلبات والردود. تتوفّر طريقتان لتنفيذ هذه الميزة، ولكنّ الطريقة المكتوبة بلغة C تحقّق أداءً أفضل.

اطّلِع على دليل Protobuf لمزيد من المعلومات.

وضع تشغيل مترجم PHP

‫PHP هي لغة برمجة نصية متعددة الاستخدامات، وتتضمّن العديد من أوضاع التشغيل حسب الاستخدام. تتميّز لغة PHP CGI (واجهة البوابة المشتركة) بميزة ملحوظة لأنّها يمكنها مشاركة الموارد بين عمليات التنفيذ.

إصدار PHP

من الممارسات الجيدة الترقية بانتظام إلى إصدار PHP أحدث لأنّه عادةً ما يتضمّن أداءً أفضل بشكل عام. قائمة بإصدارات PHP المتوافقة

إصدارات Google Ads API غير المستخدَمة

تتوافق جميع إصدارات مكتبة البرامج مع إصدارات متعددة من Google Ads API. لكل إصدار من Google Ads API متوافق مع مكتبة البرامج، تتوفّر حِزم مخصّصة للإصدار.

يمكن إزالة الحِزم المخصّصة لإصدارات Google Ads API غير المستخدَمة من مكتبة العميل بأمان. بما أنّ ذلك قد يكون مفيدًا لتسريع التنفيذ أو تقليل مساحة الذاكرة المستخدَمة، توفّر مكتبة البرامج المساعدة أدوات لتنفيذ ذلك آليًا.

مثال

لنفترض أنّك بصدد تنفيذ مكتبة برامج تستخدم أحدث إصدار من واجهة برمجة التطبيقات فقط، وهو v23، وتريد إزالة إمكانية استخدام إصدارات واجهة برمجة التطبيقات غير المستخدَمة، وهي 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

يشير ناتج تنفيذ العيّنة أدناه إلى انخفاض حجم الملف بمقدار 50 ميغابايت، وأنّ الإصدار المتبقي الوحيد المتوافق هو 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 هي لغة مفسَّرة بمعنى أنّها تجمع التعليمات أولاً قبل تنفيذها. ويكون ذلك مفيدًا عادةً لأنّه أثناء عملية التطوير، تتغيّر المصادر غالبًا، بينما لا يكون وقت التنفيذ مهمًا إلى هذا الحد. ومع ذلك، يحدث العكس في وقت الإنتاج، إذ تصبح الثبات والأداء هما الشاغلان الرئيسيان.

ذاكرة التخزين المؤقت

يُعدّ التخزين المؤقت أمرًا شائعًا وننصح به بشدة لأنّه يحسّن الأداء ويزيد الثبات من خلال تخزين تعليمات البرامج النصية المجمَّعة مسبقًا.

OPcache هو الحل الأكثر استخدامًا وهو متاح تلقائيًا.

إضافة الأموال تلقائيًا

تُعدّ ميزة التحميل التلقائي شائعة لأنّها تحسّن الأداء وتزيد الثبات من خلال تحميل معلومات مسبقة التجميع حول الفئات.

تتوافق مكتبة برامج PHP مع PSR-4 للتحميل التلقائي، وتوفّر التعريف كجزء من ملف composer.json. يمكن بعد ذلك استخدام خيارات مخصّصة في Composer، مثل --optimize-autoloader أو --classmap-authoritative، بدون الحاجة إلى أي إعدادات.

التسجيل

يمكن أن يساعد ضبط أدوات تسجيل البيانات على مستوى عالٍ مثل ERROR في تقليل الوقت المستغرَق في التنفيذ واستهلاك الذاكرة.

لمزيد من المعلومات، اطّلِع على دليل التسجيل.

تصحيح الأخطاء وتحديد المشاكل

ننصحك بإيقاف أدوات تصحيح الأخطاء وأدوات تحليل الأداء لأنّها عادةً ما تتضمّن بعض النفقات العامة لوقت التنفيذ.

التحميل المسبق

منذ الإصدار 7.4 من PHP، يمكن استخدام التحميل المسبق في OPcache لتحميل النصوص البرمجية مسبقًا في الذاكرة، ما يمثّل خطوة إضافية مقارنةً بالتخزين المؤقت العادي.

يجب تصميم نص برمجي للاستفادة من هذه الميزة، ولكن مكتبة برامج PHP لا تستفيد منها لأنّه لا توجد طريقة عامة لتنفيذ التحميل المُسبَق لـ OPcache، كما أنّ المفاضلة بين استخدام الذاكرة وتحسين الأداء تعتمد بشكل كبير على مشروع وتنفيذ معيّنَين.