Node.JS קורס: השוואה בין Apache+PHP לבין Node.js

השוואה בין Apache+PHP לבין Node.js

נכתב על ידי עמיחי היינס


זה תקציר שמבוסס על מאמר של תומס האנטר, ברשותו.

זאת השוואה של תפוחים לתפוזים. PHP היא שפה בוגרת, פועלת מאחורי שרת האינטרנט Apache בתצורה של בקשה / תגובה. Node.js הוא מסגרת מבוססת JavaScript המריצה לולאת אירואים לא חוסמים ואשר פועלת בתוך מנוע V8, עם שרת אינטרנט אופציונלי הבנוי בתוכו. בעצם ההשוואה במקום: שתי הטכנולוגיות משמשות בדרך כלל להגשת דפי אינטרנט לדפדפנים.

לשתי הסביבות יש יתרונות וחסרונותיהם משלהם, ואף שפה היא לא הפתרון המושלם לכל פרויקט.

היתרונות של PHP

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

PHP משתמש במתודולוגיות מסורתיות (זאת אומרת - מוכרות) כמו תכנות מונחה עצמים.

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

PHP יש גם גיבוי של חברה מסחרית על ידי חברת זנד (הסלוגן שלהם הוא "חברת ה- PHP").

החסרונות של PHP

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

השפה לא מסוגלת להפעיל קוד במקביל. יש בכלים כמו Gearman, אבל גם זה לא מה ש-PHP מיועד להיות.

יישום PHP עם כתובות יפות צריך קובץ htaccess שמבקש מהשרת לתרגם ביטוי של כתובת לקובץ בעזרת regex.

ההגדרות מפוזרות, לאפאצ'י יש הגדרות גלובליות והגדרות אתר ספציפיות. בנוסף יש הגדרות בקובץ php.ini שחלקם יכול להיות מבוטל בזמן ריצה.

כלי ניהול החבילות - PEAR, מעצבן לשימוש עד כדי גיחוך.

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

היתרונות של Node.js

הכח הגדול ביותר של Node.js, הוא שהוא מונע  אירועים (Event driven). יישומי node רצים נהדר על
פני תקופות זמן ארוכות. מנהל האירועים, מספק ממשק חזק ועקבי לביצוע קוד לפי ארועים.

ל - node יש שרת אינטרנט מובנה. כל בקשה מנותבת לעבור את אותו תהליך - פשוט וישיר.

צוואר הבקבוק מספר אחד עם יישומי אינטרנט הוא לא הזמן שלוקח לחישוב פעולות רעבות CPU, אלא הרשת, I/O. שרת Node.js תוקף את הבעיה הזו ישירות.

רוב המתכנתים כיום מכירים את Javascript.

מערכת ניהול החבילות, npm, נהדרת. כל אחד יכול לשים כל דבר ב-npm (אפילו אני!).

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

החסרונות של Node.js

Node.js היא פלטפורמה חדשה מאוד, ה-API שלה לא יציב, והיא לא נבדקה ביסודיות.

JavaScript רחוקה מלהיות שפה מושלמת. אם אתה מפתח הרגיל להשתמש במחלקות (class), להתרגל לשפת תכנות פונקציונלית אסינכרונית יכול להיות כואב.

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

משוואה פשוטה
הנה דרך מצחיקה להסתכל על דברים ... כדי לחקות את הפונקציונליות של Node.js באמצעות PHP + אפאצ'י, היית צריכים כמה שירותים אחרים הפועלים בנוסף. כדי ש node תפעל כמו PHP, היית פשוט כותב קוד סינכרוני.

Node.js ≈ PHP + Apache + Memcached + Gearman - complexity