בדף הזה מוסבר איך להעביר את סביבות ההרצה של PHP מהדור הראשון לדור השני. כדי לשדרג את האפליקציה מהדור השני לגרסה העדכנית ביותר של PHP שנתמכת, אפשר לעיין במאמר בנושא שדרוג אפליקציה קיימת.
PHP 5 יצא משימוש. לא תוכלו לפרוס אפליקציות PHP 5, גם אם הארגון שלכם השתמש בעבר במדיניות ארגונית כדי להפעיל מחדש פריסות של סביבות ריצה מדור קודם. אפליקציות PHP 5 קיימות ימשיכו לפעול ולקבל תנועה. מומלץ לעבור לגרסה העדכנית ביותר של PHP שנתמכת.
מעבר ל-PHP runtime מהדור השני שנתמך מאפשר לכם להשתמש בתכונות שפה עדכניות ולפתח אפליקציות ניידות יותר עם קוד אידיומטי.
בעיות תאימות בין PHP 5.5 לבין סביבות זמן הריצה של PHP מהדור השני
במסמכי התיעוד הרשמיים של PHP מפורט מידע על מעבר מגרסאות שונות של PHP:
- העברה מ-PHP 5.5.x ל-PHP 5.6.x
- העברה מ-PHP 5.6.x ל-PHP 7.0.x
- העברה מ-PHP 7.0.x ל-PHP 7.1.x
- העברה מ-PHP 7.1.x ל-PHP 7.2.x
- העברה מ-PHP 7.2.x ל-PHP 7.3.x
- העברה מ-PHP 7.3.x ל-PHP 7.4.x
- העברה מ-PHP 7.4.x ל-PHP 8.0.x
- העברה מ-PHP 8.0.x ל-PHP 8.1.x
ההבדלים העיקריים בין 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 | השתנה |
|
אם תשתמשו באחד מהשדות שהוצאו משימוש, תופיע שגיאה בפריסת האפליקציה.
מידע נוסף זמין במאמר בנושא app.yaml.
הגבלות מופחתות על זמן הריצה
לסביבות הריצה של PHP מהדור השני יש פחות הגבלות בהשוואה לסביבת הריצה של PHP 5.5.
- התקנת יחסי תלות של צד שלישי
- סביבת זמן הריצה כוללת מערכת קבצים מלאה.
- ליצור תהליכים או תהליכים מקבילים ברקע שפועלים מעבר להיקף הבקשה בזמן שהמופע פועל.
- משתמשים בספריית הלקוח של Google Cloud ל-PHP כדי לשלב אפליקציות עם שירותים אחרים של Google Cloud . מידע נוסף זמין במאמר התקנת ספריית הלקוח של Google Cloud.
מידע נוסף זמין במאמר בנושא סביבת זמן הריצה של 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, כמו חיפוש, אפשר להשתמש בספקי צד שלישי או בפתרונות עקיפים אחרים. מידע נוסף על מעבר לשירותים לא מקובצים זמין במאמר מעבר משירותים מקובצים.
הרצת האפליקציה באופן מקומי
כדי לבדוק את האפליקציה ולהפעיל אותה באופן מקומי:
מתקינים באופן מקומי גרסה של PHP שתואמת לזמן ריצה של PHP מהדור השני שזמין בסביבה הרגילה של App Engine.
מתקינים שרת אינטרנט ומשתמשים בו כדי להפעיל את האפליקציה באופן מקומי.
לדוגמה, מריצים את הפקודה הבאה כדי להפעיל את שרת ה-HTTP:
php -S localhost:8080
אחר כך, צופים באפליקציה בדפדפן האינטרנט בכתובת http://localhost:8080.