בדף הזה מוסבר איך להעביר את סביבות ההרצה של 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 | נוסף | אופציונלי, אפשר להשתמש בשדה הזה כדי לציין את הפקודה שתרוץ כשהאפליקציה תתחיל לפעול. |
threadsafe | הוצא משימוש | כל האפליקציות נחשבות בטוחות לשימוש בריבוי תהליכים (threadsafe), כלומר מופע יכול לטפל בכמה בקשות בו-זמנית. |
api_version | הוצא משימוש | בעבר נדרש, אבל לא נחוץ בסביבות זמן הריצה של PHP מהדור השני. |
application_readable | הוצא משימוש | |
builtins | הוצא משימוש | |
libraries | הוצא משימוש | אפשר להתקין תלות שרירותית של צד שלישי באמצעות קובץ מטא-נתונים composer.json. |
handlers | השתנה |
|
אם תשתמשו באחד מהשדות שהוצאו משימוש, תהיה שגיאה בפריסת האפליקציה.
מידע נוסף זמין במאמר בנושא app.yaml.
הגבלות מופחתות בזמן הריצה
לסביבות הריצה של PHP מהדור השני יש פחות הגבלות בהשוואה לסביבת הריצה של PHP 5.5.
- התקנת יחסי תלות של צד שלישי
- סביבת זמן הריצה כוללת מערכת קבצים מלאה.
- ליצור תהליכים או תהליכים מקבילים ברקע שפועלים מעבר להיקף הבקשה בזמן שהמופע פועל.
- משתמשים ב-Google Cloud Client Library for 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 מספקים ספריית לקוח של Google Cloud CLI. לגבי חבילות שירותים מדור קודם שלא זמינות כמוצרים נפרדים ב- Google Cloud, כמו חיפוש, אפשר להשתמש בספקים של צד שלישי או בפתרונות עקיפים אחרים. מידע נוסף על מעבר לשירותים לא משולבים זמין במאמר מעבר משירותים משולבים.
הרצת האפליקציה באופן מקומי
כדי לבדוק את האפליקציה ולהפעיל אותה באופן מקומי:
מתקינים באופן מקומי גרסה של PHP שתואמת לזמן ריצה של PHP מהדור השני שזמין בסביבה הסטנדרטית של App Engine.
מתקינים שרת אינטרנט ומשתמשים בו כדי להפעיל את האפליקציה באופן מקומי.
לדוגמה, מריצים את הפקודה הבאה כדי להפעיל את שרת ה-HTTP:
php -S localhost:8080
אחר כך, צופים באפליקציה בדפדפן האינטרנט בכתובת http://localhost:8080.