ביצועים

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

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

הטמעות של Protobuf ו-gRPC

‫Protobuf משמש את gRPC ואת Google Ads API להודעות של בקשות ותגובות. יש שתי אפשרויות להטמעה (PHP טהור ותוסף C), והתוספים של C ל-protobuf ול-grpc מספקים ביצועים טובים משמעותית בסריאליזציה וברשת.

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

מצב הפעולה של מפענח ה-PHP

‫PHP היא שפת סקריפטים רב-תכליתית, ויש לה כמה מצבי פעולה בהתאם לשימוש. ל-PHP-FPM (FastCGI Process Manager) או לשרתי אפליקציות מתמידים יש יתרון משמעותי על פני CGI רגיל, כי תהליכי עבודה מתמידים יכולים לעשות שימוש חוזר בבייטקוד שנשמר במטמון (דרך OPcache) ובמשאבים בבקשות שונות.

גרסת PHP

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

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

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

אפשר להסיר בבטחה מספריית הלקוח את החבילות שמוקדשות לגרסאות של Google Ads 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 שלה. אחר כך אפשר להשתמש באפשרויות ייעודיות של Composer CLI, כמו --optimize-autoloader או --classmap-authoritative, בגרסאות ייצור.

רישום ביומן

הגדרת ערך סף גבוה יותר ל-loggers, כמו ERROR או WARNING בסביבת ייצור, עוזרת לצמצם את התקורה של קלט/פלט ואת צריכת הזיכרון.

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

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

כדאי להשבית תוספים של מאתר באגים ופרופילר (כמו Xdebug) בייצור, כי הם יוצרים תקורה משמעותית של ביצוע.

טעינה מראש

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

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