REDIRECT

patael

New member
REDIRECT

יש לי עמוד שמכניס נתונים מכל מיני עמודים ל DB, עכשיו הבעיה היא שאני משתמש ב LOCATION.HREF , ואז מתעכב לי החומר מבסיס הנתונים, כלומר רק אחרי שאני לוחץ REFRESH לעמוד מסויים, אני מצליח לראות את ההכנסה שלי ל DB, האם זה בגלל ה LOCATION.HREF ? אם כן, איך אני משתמש ב HEADER באמצע העמוד??
 

shanor

New member
אז ככה:

ראשית אני אישית הייתי נמנע מלעשות את מה שנראה לי לפי ההסבר שלך שאתה עושה. אם הבנתי נכון אתה לוקח מידע מאתרים ושם אותם על דף HTML שנשלח אחר כך לשרת (עושה ריפרש) כדי לקבל תוצאות מבסיס הנתונים שלך על פי המידע שקיבלת מהאתרים השונים... אם זה אכן כך, המלצה שלי, תהפוך את הסדר, במקום לשלוח את הנתונים לדף HTML שלח אותם לסקריפט שלך שישאל את מאגר הנתונים את כל מה שהוא צריך ואחר כך תשלח כבר את הדף השלם והמלא ללקוח שלך. לוגית ותיכנותית זה יותר נכון. שנית, בקשות לריפרשים לא מגיעות מהצד שרת אף פעם תמיד מהלקוח, בגלל מבנה פרוטוקול ה- HTML, הדברים עובדים ככה שאין קשר קבוע בין השרת ללקוח שלך וככה לשרת בעצם אין כוח לשלוח פקודות בצורה עצמאית ללקוח שלך בלי בקשה שלו. שלישית, אין אפשרות לשלוח HEADERS באמצע העמוד. HEADERS כשמם כן הם באים אך ורק בתחילת העמוד (אסור אפילו שיהיה רווח שישלח לפני ה-HEADERS). מקווה שהבהרתי כמה נקודות. בהצלחה שנאור.
 

patael

New member
מצטער לומר, לא ! ! ! ../images/Emo13.gif

אסביר שוב. יש אצלי בשרת מאגר נתונים. יש לי עמוד שמטפל ב DB ומכניס את הנתונים לאחר שכל התנאים התקיימו. אחרי שסיימתי להכניס את הנתונים, אני שולח אוטומטית את המשתמש חזרה לעמוד הראשי. אני משתמש בLOCATION.HREF כדי להחזירו לעמוד הראשי. משום מה, אחרי שהנתונים הוכנסו בוודאות לDB REFRESH לא רואים תוצאות רק אחרי שעושים זה מאד מוזר, כי אני בודק ב PHPMYADMIN, והמידע נכנס ל DB מה עושים, איך אני עושה REDIRECT מוצלח?
 

shanor

New member
טוב אז ככה:

רק תיקון קטן לשגיאה שעשיתי בתגובה הקודמת שלי הבעיה של ריפרשים היא לא בגלל פרוטוקול ה- HTML (אין כזה פרוטוקול זוהי שפה) אלא בגלל פרוטוקל ה- HTTP. עד כאן התיקון. עכשיו, על פי ההסבר שלך זה נראה מאוד פשוט. הבעיה היא במהירות העידכון או השאילתות של מאגר הנתונים שלך. יתכנו שני מקרים: הראשון הוא שהשאילתה שלך שאת הנתונים שלה אתה מציג בעמוד הראשי לאחר שהטופס נשלח, מסתמך על נתונים שנמצאים כבר בזיכרון כל שהוא של השרת או אולי אפילו בזיכרון המטמון של הלקוח... (או שהלקוח קורא את הדף או את הנתונים שלו מהזיכרון ולא מהשרת, פרוקסי וכו´). כדי להמנע מזה תוסיף תג מתא META TAG, שימנע את השמירה של הדף בזיכרונות מטמון שונים (על כל מיניהם וסוגיהם). אפשרות שניה היא האפשרות שבה התגובה של שרת מאגר הנתונים שלך היא איטית משהו, אם בגלל שאילתות מורכבות וארוכות ואם בגלל עידכונים מאסיביים שמאגר הנתונים נדרש לעשות... אם אכן זה המצב, יש שתי אפשרויות, הקלה יותר היא פשוט להשהות את טעינת הדף הראשי שלך לפרק זמן קצר על ידי SETINTERVAL או משהו דומה בג´אווה סקריפט פשוט. לדעתי זו הדרך הקלה יותר אבל המוצלחת פחות. דרך זו אינה מתחשבת במאגר הנתונים שלך. כדי ליצור מצב של התחשבות במאגר הנתונים אני הייתי נוקט בדרך של נעילת המאגר. היות ולכל סוג שאילתות יש עדיפויות שונות, יתכנו מצבים שבהם שאילתות שמגיעות בסמיכות יבוצעו לפי סדר העדיפויות שלהן ולא לפי הסדר שבו אתה באמת שולח את השאילתות... על כן הגישה העדיפה בעיני היא נעילת הטבלה שלך בעת העידכון, ושיחרורה לאחר סיום העידכון. ככה אתה מונע מצב של שאילתת קריאה לפני שאילתת העדכון...נעילת הטבלה מבטיחה מצד אחד את העידכון של הטבלה ומצד שני קריאה של נתונים לאחר העידכון (כמובן לאחר ששיחררת את הטבלה), אבל גם כאן כמו בהרבה מקומות עליה וקוץ (גדול) בה, דבר זה יגרום להאטה משמעותית בתפקודי מאגר הנתונים שלך בקשר לטבלה הזו והעידכונים יתאפשרו בצורה סדרתית בלבד (שחלק מהאנשים לא יראו בזה חיסרון אבל אני אישית במצבים מסויימים אעדיף להמנע מזה). אני מקווה שלא סיבכתי אותך יותר. בהצלחה שנאור.
 
למעלה