מעבר מ-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נוסף אופציונלי, אפשר להשתמש בשדה הזה כדי לציין את הפקודה שתרוץ כשהאפליקציה תופעל.
app_engine_bundled_servicesלאפליקציות שמשתמשות בחבילות שירותים מדור קודם אפשר להגדיר את השדה הזה כדי לגשת לשירותים ספציפיים שצורפו לגרסאות נתמכות של PHP. מידע נוסף על הגדרות התצורה של app_engine_bundled_services זמין בהפניה לקובץ app.yaml.
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 CLI. Google Cloud לגבי חבילות שירותים מדור קודם שלא זמינות כמוצרים נפרדים ב- Google Cloud, כמו חיפוש, אפשר להשתמש בספקי צד שלישי או בפתרונות עקיפים אחרים. מידע נוסף על מעבר לשירותים לא מקובצים זמין במאמר מעבר משירותים מקובצים.

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

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

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

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

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

php -S localhost:8080

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