מחפש רעיון לייעול מהירות קוד
-
יש לי קוד שמחזיר לי את רשימת מסלולי האוטובוס הפעילים לפי מספר קו.
אני משתמש עם הקבצים של משרד התחבורה כאן, אבל שם יש רשימת של כל המסלולים שהיו ויהיו וכו' ולא כולם בהכרח באמת פעילים.
לכן בינתיים מצאתי פתרון שמאט לי את הקוד, אני מבקש מ SQL שיביא לי את כל המסלולים שהם קו X ואז אני עובר על אחד אחד ומגיש בקשה לקבלת התחנות של המסלול הזה, ואם התגובה תקינה זה אומר שהקו פעיל, ואם לא אז זה אומר שהקו לא פעיל.
זה רעיון די פנטי אבל זה מה שמצאתי כרגע
אבל כאמור זה ממש מאט לי את הקוד, ולמשל כשאני מבקש לקבל את קו שתיים זה מבצע שאורך הרבה זמן..., אז אשמח מאוד אם מישהו יוכל להמליץ לי על דרך למהר את הקוד הקיים או למצוא דרך יותר נורמלית לקבל רק את הקווים הפעילים
הנה הקוד (לא מאוד יפה ואסטטי... אבל זה הקוד...):$getRoutesData = $dbh->query('select route_long_name,route_id,agency_id from routes where route_short_name ='.$line); $getRoutes = $getRoutesData->fetchAll(PDO::FETCH_ASSOC); $comp = array(); $compToGet = ""; for ($h=0;$h<count($getRoutes);$h++){ $tipes = json_decode(file_get_contents("http://moran.mot.gov.il:110/Channels/HTTPChannel/SmQuery/2.8/json?Key=****&MonitoringRef=all&LineRef=".$getRoutes[$h]['route_id']),true)['Siri']['ServiceDelivery']['StopMonitoringDelivery'][0]['MonitoredStopVisit']; if ($tipes!=null){ if(in_array($getRoutes[$h]['agency_id'],$comp)==false){ $comp[] = $getRoutes[$h]['agency_id']; $compToGet .= " , "; } } }
תודה רבה מראש!
-
במידה שהפיתרון שהצעת זה הפיתרון הנכון לעשות,
אתה יכול לעבור פעם אחד על כל הקווים שיש בטבלה ולבדוק אם הם פעילים.
אין צורך לעבור בכל בקשה -
@ivrtikshoret נכון, גם אני חשבתי על זה בהתחלה, אבל יש קווים שפעילים רק פעם ב...
למשל במוצאי חגים וכו' יש הרבה חלופות לקווים שלא פעילים בימים רגילים -
@dovid כתב במחפש רעיון לייעול מהירות קוד:
@ששא אני לא מאמין לך שאין בקבצים (הדינמיים או הסטטיים) מידע על תקופת פעילותם.
אני עכשיו עובר על כל הקבצים שוב, יכול להיות שיש כן מידע, אבל מה שבטוח שזה ממש מסובך (החישוב עצמו אח"כ כנראה שלא כ"כ, אבל לעלות על אופן החישוב כדי לקבל את התוצאה כרגע מסובכת לי)
ננסה להסתדר
בכל אופן אם יש פה מישהו שכבר התנסה בזה ויודע לתרום לי על זה אשמח מאוד! -
@mekev כתב במחפש רעיון לייעול מהירות קוד:
אני צריך מידע על route_id האם הוא פעיל, כי לקבל את רשימת התחנות צריך דווקא את השדה route_id שהוא לא מספר הקו אלא מזהה יחודי אחר, ואת זה נראה לי שאין בהנ"ל
-
@ארי לא
אני צריך שמשתמש יוכל להכניס מספר קו והוא יקבל את כל תחנות הקו שאותו הוא מבקש
אבל כדי לקבל תחנות קו צריך להגיש בקשת API למשרד התחבורה ששם צריכים id של הקו, ולכן יש קובץ מסודר עם כל הקווים וה id שלהם, אבל בקובץ למשל לקו 2, יש כאלו עשרות אם לא מאות חלופות בארץ, אבל חלק מהם לא רלוונטיים שהרבה זמנים, אז אני לא רוצה לתת לו את כל הרשימה כי בקו 2 למשל זה מסתכם בלמעלה מ 100 תוצאות...
לכן אני רוצה לסנן קודם את הרשימה למינימום