דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ריענון מחדש של חלק מתהליך NODEJS

ריענון מחדש של חלק מתהליך NODEJS

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 3 כותבים 103 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    כתב ב נערך לאחרונה על ידי
    #1

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

    app.use('/yeshiva_hal_kivro', require('./projects/yeshiva_hal_kivro'));
    app.use('/beney_aliya', require('./projects/beney_aliya'));
    

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

    app.use('/yeshiva_hal_kivro', require('./projects/yeshiva_hal_kivro'));
    app.use('/beney_aliya', require('./projects/beney_aliya'));
    app.all('/update/:project', function (req, res) {
        let project = req.params.project;
        app.use('/' + project, require('./projects/' + project));
        res.send('update!');
    });
    

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

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #2

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

      delete require.cache[require.resolve('./projects/' + project)]
      

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

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      ח תגובה 1 תגובה אחרונה
      4
      • ח מנותק
        ח מנותק
        חוקר
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid
        א. ייתכן, אבל כשאני צריך רוצה להקים 5 פרוייקטים, שכולם משתמשים באותם מודולים, ואותם מחלקות שבניתי, ובסך הכל הם דומים מבחינת התלויות, ורק כל אחד יש לו את הפעולות שלו ואת הטבלאות שלו, הם אני מריף לכל אחד תהליך, זה דורש לכל אחד כמאה מגה ראם, ואז יחד הקצאתי 500 מגה ראם.
        משא"כ בתהליך אחד זה לא אמור לצאת יותר 150 מגה ראם, (לא שאני כבר סיימתי לחבר חמר, אלא רק 2, אבל כך זה נראה לי לפי החשבון של שתי פרוייקטים.
        אולי זה לא כ"כ נורא, יש לי 4 גיגה שמתוכם בדר"כ 2 פנויים, אבל אני רוצה לנהל מראש את התקציב חסכוני יותר.
        אדרבה, תקן אותי אם אני טועה.
        ב. זה לא לשינויים שעתיים, אלא שדרוגים והתקדמות בפרוייקטים קיימים או אפילו הוספת פרוייקט חדש.
        נניח בישיבה על קברו אני רוצה להוסיף הצגת נתון כללי של כל המשתתפים ביום זה, אני מבצע שינוי בקוד, מאתחל את התהליך, וכעת אני מאתחל סתם את שאר הפרוייקטים ג"כ, דבר שלעצמו לא כ"כ נורא, אבל ייתכנו פה ושם לקוחות שנעצרה להם הבקשה באמצע, וכן ריענון הנתונים השמורים וכו' שלכן אני מעדיך שאת מה שאני לא חייב אני לא מרענן.

        תגובה 1 תגובה אחרונה
        2
        • yossizY מנותק
          yossizY מנותק
          yossiz
          כתב ב נערך לאחרונה על ידי
          #4

          זה קשור לענין?
          https://github.com/magicode/express-hot-reload

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          dovidD תגובה 1 תגובה אחרונה
          2
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            השיב לyossiz ב נערך לאחרונה על ידי
            #5

            @yossiz כן. שמה זה אוטומטי לפי שינוי בקבצים.

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            2

            בא תתחבר לדף היומי!
            • התחברות

            • אין לך חשבון עדיין? הרשמה

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