ביצועים

ספריית הלקוח של PHP מקלה על אינטראקציות עם Google Ads API, עם הגדרות מינימליות מצידכם. עם זאת, הביצועים תלויים מאוד באופן השימוש בספרייה והשילוב שלה.

רוב השיטות המומלצות האלה רלוונטיות לכל השפות. במדריך הזה נסביר על השיטות הספציפיות ל-PHP.

הטמעת Protobuf

Protobuf משמש את gRPC ואת Google Ads API להודעות של בקשות ותשובות. יש שתי הטמעות, אבל זו שכתובה ב-C מניבה ביצועים טובים יותר.

מידע נוסף זמין במדריך Protobuf.

מצב הפעולה של רכיב התרגום של PHP

PHP היא שפת סקריפטים רב-תכליתית שיש בה מצבי פעולה רבים, בהתאם לשימוש. ל-PHP CGI (Common Gateway Interface) יש יתרון חשוב כי היא יכולה לשתף משאבים בין הפעלות.

גרסת PHP

מומלץ לשדרג באופן קבוע לגרסת PHP חדשה יותר, כי בדרך כלל הביצועים שלה טובים יותר. רשימת הגרסאות הנתמכות של PHP.

גרסאות של Google Ads API שאינן בשימוש

כל הגרסאות של ספריית הלקוח תומכות במספר גרסאות של Google Ads API. לכל גרסה של Google Ads API שנתמכת על ידי ספריית הלקוח יש חבילות ייעודיות לגרסה.

אפשר להסיר מספריית הלקוח את החבילות הייעודיות לגרסאות של Google Ads API שלא נעשה בהן שימוש. בגלל שהיא יכולה לעזור בזירוז הביצוע או בצמצום טביעת הרגל של הזיכרון, ספריית הלקוח מספקת כלים כדי לעשות זאת באופן פרוגרמטי.

דוגמה

נניח שאתם מטמיעים את ספריית הלקוח שמשתמשת רק בגרסת ה-API האחרונה: v16, ואתם רוצים להסיר את התמיכה בגרסאות ה-API שלא בשימוש: v15 ו-v14.

בקובץ 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 v14 and v15 of the Google Ads API.
echo "# Removing support..."
composer run-script remove-google-ads-api-version-support -- 14 15

# 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

פלט הביצוע לדוגמה שלמטה מציין הקטנה של 50M בגודל הקובץ, והגרסה הנתמכת היחידה שנשארה היא V16:

# Supported Google Ads API versions:
V14
V15
V16
# Vendor folder size:
110M    ./vendor
# Removing support...
> Google\Ads\GoogleAds\Util\ApiVersionSupport::remove
Removing support for the version 14 of Google Ads API...
Done
Removing support for the version 15 of Google Ads API...
Done
# Supported Google Ads API versions:
V16
# Vendor folder size:
60M     ./vendor

פיתוח לעומת ייצור

PHP היא שפה מתורגמת בכך שהיא מבצעת מראש את ההוראות לפני הביצוע שלהן. זה בדרך כלל מועיל, כי מקורות המידע משתנים בדרך כלל, אבל זמן הביצוע לא קריטי. אבל ההפך נכון בזמן הייצור, כי היציבות והביצועים הופכים לחששות העיקריים.

מטמון

שמירה במטמון היא תופעה נפוצה ומומלץ מאוד כי היא משפרת את הביצועים וגם משפרת את היציבות על ידי אחסון ההוראות לסקריפטים שעברו הידור מראש.

הפתרון OPcache הוא הכי נפוץ, והוא זמין כברירת מחדל.

טעינה אוטומטית

טעינה אוטומטית נפוצה כי היא משפרת את הביצועים וגם משפרת את היציבות באמצעות טעינת מידע שעבר הידור מראש של המחלקות.

ספריית הלקוח של PHP תואמת ל-PSR-4 לטעינה אוטומטית, ומספקת את ההגדרה כחלק מהקובץ composer.json. אפשר להשתמש באפשרויות ייעודיות של Composer, כמו --optimize-autoloader או --classmap-authoritative, למשל.

רישום ביומן

הגדרת יומני רישום ברמה גבוהה כמו ERROR יכולה לעזור בצמצום התקורה של זמן הביצוע וצריכת הזיכרון.

למידע נוסף, אפשר לעיין במדריך לרישום ביומן.

ניפוי באגים ופרופיל

מומלץ להשבית את הכלים לניפוי באגים ולכלי פרופילים, כי בדרך כלל יש להם תקורת זמן מסוימת לביצוע.

טעינה מראש

החל מ-PHP 7.4, אפשר להשתמש בטעינה מראש של OPcache כדי לטעון מראש סקריפטים בזיכרון, התקדמות שלב אחד יותר מאשר שמירה רגילה במטמון.

צריך לתכנת סקריפט כדי לנצל את היתרונות של התכונה הזו, אבל ספריית הלקוח של PHP לא מאפשרת זאת, כי אין דרך כללית להטמיע טעינה מראש של OPcache, וההבדל בין שימוש בזיכרון לבין שיפור הביצועים הוא ספציפי מאוד לפרויקט ולביצוע ספציפיים.