מעבר מ-PHP 5.5 ל-PHP runtime העדכני

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

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

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

בעיות תאימות בין PHP 5.5 לבין סביבות זמן הריצה של PHP מהדור השני

במסמכי התיעוד הרשמיים של PHP מפורט מידע על מעבר מגרסאות שונות של PHP:

ההבדלים העיקריים בין PHP 5.5 לבין סביבות זמן הריצה של PHP מהדור השני

בהמשך מפורטים ההבדלים בין PHP 5.5 לבין סביבות ריצה של PHP מהדור השני בסביבת App Engine סטנדרטית:

הבדלים בשימוש בזיכרון

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

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

הבדלים בשימוש במעבד

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

הבדלים בכותרות הבקשות

סביבות זמן ריצה מהדור הראשון מאפשרות להעביר לאפליקציה כותרות של בקשות עם קווים תחתונים (לדוגמה, X-Test-Foo_bar). בזמן ריצה מדור שני,‏ Nginx מוצג בארכיטקטורת המארח. כתוצאה מהשינוי הזה, סביבות זמן ריצה מהדור השני מוגדרות להסרה אוטומטית של כותרות עם קווים תחתונים (_). כדי למנוע בעיות באפליקציה, מומלץ להימנע משימוש בקווים תחתונים בכותרות של בקשות באפליקציה.

העברת הקובץ app.yaml

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

בזמני הריצה של PHP מהדור השני אי אפשר להתאים אישית את רכיב ה-handler‏ script. הערך התקין היחיד הוא auto, כי כל התנועה מועברת באמצעות פקודת נקודת הכניסה. כדי שהפריסה תצליח, כל רכיבי ה-handler של כתובות URL לא סטטיות חייבים לכלול script: auto

ההתנהגות של חלק מהאלמנטים בקובץ התצורה app.yaml השתנתה:

רכיבשינוי הסוגתיאור
entrypointנוסף אופציונלי, אפשר להשתמש בשדה הזה כדי לציין את הפקודה שתרוץ כשהאפליקציה תתחיל לפעול.
threadsafeהוצא משימושכל האפליקציות נחשבות בטוחות לשימוש בריבוי תהליכים (threadsafe), כלומר מופע יכול לטפל בכמה בקשות בו-זמנית.
api_versionהוצא משימושבעבר נדרש, אבל לא נחוץ בסביבות זמן הריצה של PHP מהדור השני.
application_readableהוצא משימוש
builtinsהוצא משימוש
librariesהוצא משימושאפשר להתקין תלות שרירותית של צד שלישי באמצעות קובץ מטא-נתונים composer.json.
handlersהשתנה
  • השדה script הוא אופציונלי והערך היחיד שמתקבל הוא auto. משתמשים במסגרת אינטרנט (כמו Laravel,‏ Symfony,‏ Slim או אפשרות דומה) עם ניתוב בתוך האפליקציה כדי להריץ סקריפט כשבקשה מגיעה לנתיב ספציפי
  • אין תמיכה בשדה login. משתמשים בניהול זהויות והרשאות גישה (IAM) לניהול משתמשים.

אם תשתמשו באחד מהשדות שהוצאו משימוש, תהיה שגיאה בפריסת האפליקציה.

מידע נוסף זמין במאמר בנושא app.yaml.

הגבלות מופחתות בזמן הריצה

לסביבות הריצה של PHP מהדור השני יש פחות הגבלות בהשוואה לסביבת הריצה של PHP 5.5.

מידע נוסף זמין במאמר בנושא סביבת זמן הריצה של PHP.

מעבר מ-App Engine PHP SDK

כדי לצמצם את המאמץ והמורכבות של העברת זמן הריצה, הסביבה הרגילה של App Engine מאפשרת לכם לגשת להרבה שירותים ולממשקי API מדור קודם בחבילה של זמן הריצה של PHP מהדור השני, כמו Memcache. אפליקציית PHP מהדור השני יכולה להפעיל את ממשקי ה-API של השירותים שכלולים בחבילה דרך App Engine SDK, ולקבל גישה לרוב היכולות כמו בסביבת זמן הריצה של PHP 5. לא לכל השירותים מהדור הקודם שזמינים ל-PHP 5 יש שירות מקביל בסביבות זמן הריצה של PHP מהדור השני. רשימה מלאה של ממשקי API של שירותים בחבילה מדור קודם שזמינים בסביבות זמן ריצה של PHP מהדור השני מופיעה במסמכי העזר בנושא ממשקי API של שירותים בחבילה מדור קודם.

יש לכם גם אפשרות להשתמש Google Cloud במוצרים שמציעים יכולות דומות לאלה של חבילות השירותים מדור קודם. המוצרים האלה Google Cloud מספקים ספריית לקוח של Google Cloud CLI. לגבי חבילות שירותים מדור קודם שלא זמינות כמוצרים נפרדים ב- Google Cloud, כמו חיפוש, אפשר להשתמש בספקים של צד שלישי או בפתרונות עקיפים אחרים. מידע נוסף על מעבר לשירותים לא משולבים זמין במאמר מעבר משירותים משולבים.

הרצת האפליקציה באופן מקומי

כדי לבדוק את האפליקציה ולהפעיל אותה באופן מקומי:

  1. מתקינים באופן מקומי גרסה של PHP שתואמת לזמן ריצה של PHP מהדור השני שזמין בסביבה הסטנדרטית של App Engine.

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

לדוגמה, מריצים את הפקודה הבאה כדי להפעיל את שרת ה-HTTP:

php -S localhost:8080

אחר כך, צופים באפליקציה בדפדפן האינטרנט בכתובת http://localhost:8080.