ביצועים

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

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

הטמעת Protobuf

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

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

מצב הפעולה של 'תרגום ב-PHP'

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

גרסת PHP

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

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

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

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

דוגמה

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

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

# 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 מגודל הקובץ, והגרסה הנתמכת היחידה שנשארה היא V17:

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

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

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

מטמון

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

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

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

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

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

רישום ביומן

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

מידע נוסף זמין במדריך הרישום ביומן.

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

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

טעינה מראש

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

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