יש לי מערכת טלפונית לרישום נקרא לזה "תורים"
נרשמים במערכת ובוחרים את השעה המבוקשת מתוך טבלת התורים.
במערכת נוצר כל יום רשימת תורים על פי הגדרות, וכאשר לקוח מתקשר הוא יכול לבחור תור פנוי מרשימת התורים.
בשטח, יש דלפק בו נמצא נציג המקבל את הבאים וכאשר מגיעים לשטח מזדהים באמצעות הזיהוי והנציג רואה למתי הוזמן ומעדכן על התור אישור הגעה ו/או מעדכן באם שולם או לא התור הנוכחי.
המערכת הטלפונית היא באמצעות (ימות המשיח עם שלוחת API המחוברת לשרת שלי הכתוב) בנוד.
ממשק הניהול הינו בפרימוורק YII2 הכתוב בPHP.
בסיס הנתונים הינו mysql, השרת הינו nginx.
כל רישום במערכת הטלפונית נשמרת ישירות בבסיס הנתונים, ובמקביל גם בתהליך עצמו בנוד.
ממשק הניהול שואב את הנתונים ישירות מבסיס הנתונים.
השאלות הן בנוגע לממשק הניהול.
יש לי כבר בממשק תצוגה שמציגה את טבלת הרישום.
אך הבעיה היא שאני צריך שהמסך יתעדכן כל הזמן בנתונים הדינאמיים של הרישום, זאת אומרת שאם כעת נרשם מישהו במערכת או ביטל ושינה תור וכו' הכל ישתקף אונליין במסך הממשק.
למיטב הבנתי ישנם שתי דרכים, א. ריענון אוטומטי של הדף כל X שניות, שזה אומר שהPHP ישאב שוב את הנתונים מבסיס הנתונים וירנדר את ה HTML שוב שוב.
אני לא צריך לטעון ממש את כל הדף, אלא YII2 תומך ב pjax שזה ריענון אוטומטי של רק חלק מסויים בדף. שזה אומר לרענן רק את החלק של הטבלה של התורים ללא התפריט העליון, כך שזה פחות מפריע לעין.
אך עדיין דורש כל פעם שאיבת הנתונים המלאים, ויכול גם להפריע לביצוע פעולות על תור. כגון אם הנציג ירצה לבצע שמירה ידנית של תור ותוך כדי מישהו נרשם לתור זה דרך הטלפון וכדומה, (אני בכל מקרה יעשה ולידאציה בצד השרת לפני שמירת תור ידני שאני בודק שהוא אכן עדיין פנוי, אבל בכל זאת לצד הלקוח הייתי רוצה שזה מיד יעודכן כנרשם ויתבטל האפשרות של שמירה ידנית).
האמת היא שאני יכול אולי גם לבדוק אפשרות של ריענון על ידי שאיבת json בלבד של הטבלה העדכנית, ולבצע מיזוג מחדש לתוך הטבלה, או יותר מזאת לעבור שורה שורה ולבצע השוואה ובאם השתנה משהו מהקיים זה יעדכן אותו ואחרת לא ישנה אותו כלל, שזה הכי פחות יפריע לעין.
הדרך השניה שאף פעם לא נגעתי בה הינה באמצעות סוקט, שהדף יהיה מחובר כל הזמן לשרת ובכל שינוי בשרת אני דוחף אותו ישירות לקליינט.
אשמח לדעת מה חוות דעתכם, ראשית אם יש פיתרון יותר טוב, שנית האם לעבוד עם סוקט הוא קל או קשה, ומה קורה כאשר החיבור נופל לרגע וכו', עד כמה עבודה ובלאגן יהיה לי מזה.
בנוסף, מעניין לעניין באותו עניין, בעת רישום ידני, על הנציג לבחור את המנוי מתוך טבלת המנויים, לצורך כך עלי לפתוח לו חלון בחירת מנוי, שהוא יכול לחפשו בקלות בכל אחד מהפרטים, כגון שם או טלפון או מספר זהות וכדומה, חשבתי לטעון לו את הכל לחלונית בחירה שיהיה בה טבלה קטנה מבוססת datatable.
השאלה היא איך אני יכול לגרום שגם אם נרשם כעת מנוי חדש למערכת (לא לתור, אלא למינוי), זה יתווסף אוטומטי לטבלה השמורה בזכרון, והאם זה בכלל יעיל לשמור בזכרון של הדף טבלת מנויים, שיכול להגיע לכמה אלפי מנויים לסניף, אלא עדיף תמיד לבצע חיפוש בצד שרת בלבד, אך מסיר את הדינאמיות והקלילות של החיפוש בטבלה על ידי datatable.
סליחה על האריכות אך @dovid אוהב לקבל סיפור מלא (מקוה שכך הכל ברור).
אשמח לקבל את חוות דעתכם