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

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

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

בדיקה האם המשתמש מחובר כעת

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

    כשיש מערכת משתמשים, אני רוצה לדעת האם משתמש מסויים מחובר כעת.

    לא משנה באיזה פלטפורמה (אקסס, WPF, WINFORM וכו ) -- למעט ווב, יש לי קושי לדעת מי מחובר כעת.

    אז ככה: מה אני עשיתי, ואיפה אני מסתבך.

    נתחיל איפה זה עובד מצויין: בווב.
    בווב זה עובד מצויין כי תמיד אני יכול לדעת מי מהסש'נים מחובר כעת, ואם זה המשתמש הנוכחי אני יכול לחסום אותו וכו'.

    איפה זה לא עובד? ניקח לדוגמא את WinForm - כשהדוגמא שאני מדבר עליה היא עבודה על תוכנה אחת ממחשבים מרובים.
    מה ניסיתי?

    1. יש לי עמודה בטבלת המשתמשים שמסומנת כשהמשתמש התחבר, ואני מוריד את הסימון כשהתוכנה נסגרת.
      זה לא מושלם: א. אם התוכנה "עפה" ע"י סגירת הפרוסס או כיבוי לא מבוקר, אין יציאה מסודרת ולכן הV של ה"משתמש מחובר" לא יורד. ב. אם אני רוצה לאפשר לאותו משתמש להיות מחובר עד כמה פעמים (נניח 3), אז אני לא יכול לדעת כמה פעמים, וכן ברגע שהמשתמש יצא פעם אחת הוא כבר מסומן כלא מחובר בכלל - אפילו שהוא מחובר עוד פעמיים.
    2. נעילת הרשומה של המשתמש - לא מושלם - בעיקר בגלל סיבה ב' דלעיל.
    3. כתיבה לקובץ פיזי והשארתו "תלוי באוויר" כל זמן שהתוכנה פתוחה - אם התוכנה "עפה" הקובץ משתחרר לדוגמא משתמש שהID שלו הוא 1 אז הקובץ יהיה U1 וכו'. ואז אני יודע אם הקובץ תפוס או לא. -- זה עובד מצויין, הבעייה שזה עובד רק במקומי והרי לפעמים עובדים עם אותו משתמש מכמה מחשבים.

    יש רעיונות???

    פורסם במקור בפורום CODE613 ב23/04/2014 20:29 (+03:00)

    אין טסט כמו פרודקשן.

    המייל שלי urivpn@gmail.com

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

      אמרת שיש תוכנה אחת שכולם מחוברים אליה נכון. פשוט אתה יכול לפתוח סוקט tcp מול התוכנה המרכזית שמחובר כל הזמן. ובמקרה התוכנה עפה המערכת הפעלה דואגת לסגור את הסוקט ככה שמיד אתה יודע.

      פורסם במקור בפורום CODE613 ב23/04/2014 22:29 (+03:00)

      תגובה 1 תגובה אחרונה
      2
      • clickoneC מנותק
        clickoneC מנותק
        clickone
        כתב ב נערך לאחרונה על ידי
        #3

        חשבתי על זה.
        2 בעיות:
        התוכנה המרכזית זה שרת SQL.
        לא בא לי להפעיל צד שרת TCP למקרה הספציפי הזה על השרת שלי (זה יהיה אמור לשרת הרבה "לקוחות" שלכל "לקוח" כמה משתמשים).
        אם לא יהיה כאן רעיון אחר - זה מה שאני יעשה בסוף. בינתיים אני עוד מחפש...

        פורסם במקור בפורום CODE613 ב23/04/2014 22:39 (+03:00)

        אין טסט כמו פרודקשן.

        המייל שלי urivpn@gmail.com

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

          קודם כל, אני חייב לציין את העונג שעושה כזו שאלת איכות... תודה!

          שים לב שהשוות את הבעיה שלך לשסנים של ווב. נו ואיך זה עובד שם? כמשתמש מסויים פונה פעם ראשונה הוא יוצר סשן בצד השרת, וע"י מאפיין timeout הוא מתפרק אחרי "נטישה ארוכה" - פרק זמן בהם אין פניה.
          הבעיה שלך שאין לך צד שרת. יש לך אוסף קליינטים שעובדים ישירות מול SQL SERVER אז בעצם אין מי שינהל את השסנים, ובמחשבה שניה גם אין מי שיעשה עם המידע הזה משהו.

          אם אתה רוצה שקליינט יידע על קיומו של השני, אז צריך להשתמש אם תקשורת רשת בדיוק כמו שmagicode אמר, ולא ע"י מערכת הקבצים או מסד נתונים, שזו גישה מעוותת ובעייתית.

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

          שים לב שייתכן שתרצה שאי פעילות בתוכנה תחשב גם היא ל"ניתוק", יש על זה "דיבורים" ברשת (למשל http://www.codeproject.com/KB/WPF/AutologoffWPF.aspx?msg=3238811)

          פורסם במקור בפורום CODE613 ב24/04/2014 11:37 (+03:00)

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

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

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

            אבל אם להישאר בגבולות הפיתרון שהיה תוכל לעשות במקום שדה בוליאני שדה מספרי, ולזרוק שם כל X זמן שאילתת שינוי המספר.
            הפסקת התוכנה בכל דרך תפסיק את עדכון המספר והקליינטים האחרים יזהו "התיישנות" - אותו המספר ממשיך להתקיים וזה מראה שהעסק מת שם.
            יש בזה חוסר יעילות מסויים לשגע את השרת הSQL בשביל מטרה כזו אבל הוא לא ייקח את זה קשה 🙂

            פורסם במקור בפורום CODE613 ב24/04/2014 19:59 (+03:00)

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

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

            תגובה 1 תגובה אחרונה
            1
            • clickoneC מנותק
              clickoneC מנותק
              clickone
              כתב ב נערך לאחרונה על ידי
              #6

              @דוד ל.ט.

              אבל אם להישאר בגבולות הפיתרון שהיה תוכל לעשות במקום שדה בוליאני שדה מספרי, ולזרוק שם כל X זמן שאילתת שינוי המספר.
              הפסקת התוכנה בכל דרך תפסיק את עדכון המספר והקליינטים האחרים יזהו "התיישנות" - אותו המספר ממשיך להתקיים וזה מראה שהעסק מת שם.
              יש בזה חוסר יעילות מסויים לשגע את השרת הSQL בשביל מטרה כזו אבל הוא לא ייקח את זה קשה 🙂

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

              1. זה יהיה חייב להיות בטרד' אחורי, ובאקסס זה לא ישים (למעט אם משתמשים בטיימר דרך API) - הטיימר הרגיל לפעמים "תוקע את המערכת" כי הביצוע שלו נכנס באמצע קוד אחר.
              2. ואם זה תאריך ושעה צריך להתייחס לשעון קיץ וסטיות זמן וכו'.
              3. אם המשתמש יפתח את המסך שלו כדי לעדכן דברים (שם תצוגה וכו') - תהיה התנגשות כתיבה... (אפשר לפתור את זה ע"י טבלה נוספת ששם יהיה את שמות המשתמשים במקביל...)

              נראה לי שאני נוטה בחזרה לכיוון סוקט TCP 😢

              פורסם במקור בפורום CODE613 ב24/04/2014 22:25 (+03:00)

              אין טסט כמו פרודקשן.

              המייל שלי urivpn@gmail.com

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

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

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

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