בקשה | ניהול תור בשרת
-
יש לי שרת שמקבל נתונים על תור כל הזמן, אני צריך שהוא ישמור את הנתונים כל הזמן וישמור על הסדר של התור, לא יכניס פתאום את השלישי ראשון ואת הראשון אחרון, אלא שכל עוד הראשון בתור הוא ישאר ראשון, וברגע שהוא יצא מהתור, כולם יתקדמו לפי הסדר.
איך עושים את זה?השרת שולח בקשה ומקבל בתגובה מערך של שמות ואיפה הם נמצאים (צריך גם שרק מי שבמקום מסוים יהיה בתור).
-
- שרת שלי -> שרת חברה - כל שלוש שניות בערך - כמה אנשים בתור ואיפה
- שרת חברה -> שרת שלי - רשימה של כלל המאזינים ואיפה כל אחד נמצא
- שרת שלי - בודק מי נמצא בשלוחה X, מי שנמצא בה מתווסף לרשימת המתנה לפי הכללים.
כללי רשימת המתנה:
מי שחדש שם - מתווסף לסוף.
מי שהיה כבר ועדיין שם - נשאר במקומו בתור או מתקדם אם הראשון/מישהו שלפניו בתור עזב.
מי שהיה ועזב (ז"א כבר לא מופיע בשלוחה) - יוצא מהתור ואלו שאחריו מתקדמים לפי התור.
אני צריך את "כללי רשימת המתנה".
מקווה שעכשיו יותר ברור
-
@עידו300 בשביל זה יש גוגל או GPT, זה ממש דברים בסיסיים של השפה (אגב אם אתה יודע רק C# למה אתה רוצה לכתוב את הקוד הזה דווקא בPHP?)
לשמור מידע בPHP שרץ פר בקשה על ידי שרת האינטרנט - SESSION, קובץ JSON, דאטהבייס... אבל מהתיאור שלך לא היה נשמע שזה צריך לרוץ דווקא כתגובה לבקשה אלא יכול גם לרוץ ברצף ברקע -
@צדיק-תמים כתב בבקשה | ניהול תור בשרת:
@עידו300 אם זה שרת רגיל למה אתה לא מתקין עליו C#?
כי אני לא מבין בזה כלום...
גם נראה לי שהשרת חלש מאוד ואין לו הרבה זכרון.אני מצליח להסתדר עם כתיבת קוד וספריות תראה לדוגמא את עמוד הבית (שכבר לא בתוקף אבל עוד פעיל...) בניתי לבד בהכוונת GPT היה קשוח אבל הסתדרתי, בניתי גם כמה API שהייתי צריך (אתה יכול לראות ב023130310 שלוחה 2), אבל תכלס לעומק לא יודע מה עושים.
-
@צדיק-תמים זו ההצעה של GPT
<?php define('QUEUE_FILE', 'queue.json'); // קובץ שישמור את התור // פונקציה לקרוא את התור מהקובץ function loadQueue() { if (!file_exists(QUEUE_FILE)) { file_put_contents(QUEUE_FILE, json_encode([])); } return json_decode(file_get_contents(QUEUE_FILE), true); } // פונקציה לשמור את התור לקובץ function saveQueue($queue) { file_put_contents(QUEUE_FILE, json_encode($queue, JSON_PRETTY_PRINT)); } // פונקציה לעדכן את התור function updateQueue($newData, $validLocation) { $queue = loadQueue(); // קריאת התור הקיים // סינון האנשים שרק מהמיקום הרצוי $filteredData = array_filter($newData, function ($person) use ($validLocation) { return $person['location'] === $validLocation; }); // יצירת רשימה של שמות בלבד $newNames = array_column($filteredData, 'name'); // שמירה על סדר: מי שכבר בתור - נשאר $updatedQueue = array_values(array_intersect($queue, $newNames)); // הוספת חדשים לסוף foreach ($newNames as $name) { if (!in_array($name, $updatedQueue)) { $updatedQueue[] = $name; } } saveQueue($updatedQueue); // שמירת התור המעודכן return $updatedQueue; } // קבלת הנתונים מהשרת (הדמיה של POST) $dataFromServer = json_decode(file_get_contents('php://input'), true); // רק מי שנמצא במקום 6 ייכנס לתור $validLocation = "6 "; // עם רווח אחרי ה-6 כפי שביקשת // עדכון התור והחזרת התוצאה $resultQueue = updateQueue($dataFromServer, $validLocation); echo json_encode($resultQueue); ?>