לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 27-02-2010, 14:57
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
AJAX - מה קורה בפועל?

ערב טוב,
שבת שלום,
חג שמח


הייתי שמח לקבל הסבר על אופן פעולתו של AJAX.
[לא איך כותבים את הקוד וכו'...אלא איך הוא עובד, שולח/מקבל נתונים].

לדוגמא -
אם אני שולח לו מספר בקשות [לפני שהוא סיים לעבד בקשה קודמת, ולא הגיע לready = 4], האם הוא מבטל את כל הבקשות הקודמות ומשאיר את האחרונה?

האם כדאי בכל פעם ליצור אובייקט חדש עבור הAJAX, או ליצור אחד גלובאלי, ולעבוד איתו לאורך כל הקוד?


יצרתי מערכת של שליחת/הצגת הודעות מהמסד (סוג של צ'אט),
כל הודעה שאני שולח [גם אם זה מהיר מאוד], נשמרת,
אבל לא כל ההודעות מוצגות. האם זה בגלל שהAJAX לא מספיק לעבד את הבקשות להציג את ההודעות?

פתחתי גם FF וגם IE,
בחלק מן הפעמים - הודעות ששלחתי בFF הוצגו בIE (ולא בFF),
בחלק מן הפעמים - הודעות ששלחתי בIE הוצגו בFF (ולא בIE),
ובחלק מן הפעמים - זה הציג בשניהם.
למה זה קורה?
יכול להיות שבדפדפן אחד תהיה תגובה מהירה יותר מדפדפן אחר?


ושאלה אחרונה,
האם ככל שהמסד גדול יותר, משך הפעולה יקח יותר זמן?
אם כן, איך צ'אטים באתרים עובדים עם הרבה משתמשים / המון הודעות, בצורה מהירה?



אשמח לפירוט והרחבה,
באתרים שמלמדים AJAX, אין הסברים על צורת העבודה שלו אלא רק על הקוד.

תודה
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 27-02-2010, 18:23
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 1 שנכתבה על ידי MatiM שמתחילה ב "AJAX - מה קורה בפועל?"

ציטוט:
הייתי שמח לקבל הסבר על אופן פעולתו של AJAX.
[לא איך כותבים את הקוד וכו'...אלא איך הוא עובד, שולח/מקבל נתונים].

AJAX פועל ע"י שליחת בקשת HTTP לשרת, והחזרת הפלט מהשרת למאפיין אובייקט ה-AJAX. (יענו למשתנה JS)
שליחת הבקשה והקבלה של הפלט נעשית ללא ריענון העמוד - וכאן באה חשיבותו של AJAX.
חשוב גם ללמוד על פרוטוקול HTTP לפני כן. תראה כאן וכאן .

ציטוט:
אם אני שולח לו מספר בקשות [לפני שהוא סיים לעבד בקשה קודמת, ולא הגיע לready = 4], האם הוא מבטל את כל הבקשות הקודמות ומשאיר את האחרונה?

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

ציטוט:
האם כדאי בכל פעם ליצור אובייקט חדש עבור הAJAX, או ליצור אחד גלובאלי, ולעבוד איתו לאורך כל הקוד?

תלוי בצורך (:

ציטוט:
יצרתי מערכת של שליחת/הצגת הודעות מהמסד (סוג של צ'אט),
כל הודעה שאני שולח [גם אם זה מהיר מאוד], נשמרת,
אבל לא כל ההודעות מוצגות. האם זה בגלל שהAJAX לא מספיק לעבד את הבקשות להציג את ההודעות?

תצטרך לעשות debugging כדי לדעת.

ציטוט:
האם ככל שהמסד גדול יותר, משך הפעולה יקח יותר זמן?

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

ציטוט:
אם כן, איך צ'אטים באתרים עובדים עם הרבה משתמשים / המון הודעות, בצורה מהירה?

לא יודע, אף פעם לא בניתי צ'אט, אבל אני מניח שהם נעזרים ב-RAM במקום בדיסק.
ל-MySQL יש מנוע MEMORY ששומר נתונים בזיכרון ה-RAM. החיסרון שלו זה מיגבלות כמו שאי אפשר להשתמש בשדה VARCHAR, או שהטבלה ננעלת ברמת הטבלה, בדומה ל-MyISAM.
אבל אפשר לדוגמא לבנות הרבה טבלאות MEMORY עבור כל דו-שיח בין שני אנשים.
זה סתם הנחה, אף פעם לא בניתי אפליקציית צ'אט.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 27-02-2010, 19:48
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 3 שנכתבה על ידי dorM שמתחילה ב "[QUOTE]הייתי שמח לקבל הסבר על..."

ציטוט:
האם כדאי בכל פעם ליצור אובייקט חדש עבור הAJAX, או ליצור אחד גלובאלי, ולעבוד איתו לאורך כל הקוד?

תלוי בצורך (:


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

ציטוט:
יצרתי מערכת של שליחת/הצגת הודעות מהמסד (סוג של צ'אט),
כל הודעה שאני שולח [גם אם זה מהיר מאוד], נשמרת,
אבל לא כל ההודעות מוצגות. האם זה בגלל שהAJAX לא מספיק לעבד את הבקשות להציג את ההודעות?


תצטרך לעשות debugging כדי לדעת.


ומה השיטה הטובה ביותר לעשות את זה?
הרי צריך לדעת איפה בדיוק "נתקעת" הבקשה.
בJS? בעיבוד בPHP? וכדומה.
אולי בכלל הקריאה מהמסד בעייתית? אבל אם כן, למה חלק מההודעות כן מוצגות כמו שצריך?
צריך לחשוב על דרך שתוכל להצביע על מקום הבעיה.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 27-02-2010, 23:28
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 4 שנכתבה על ידי MatiM שמתחילה ב "[QUOTE][b]האם כדאי בכל פעם..."

ציטוט:
במקור נכתב על ידי MatiM
לפי איזה קריטריונים תקבע מה כן ומה לא?
או...תן דוגמאות למערכות שתיצור בכל פעם אובייקט נוסף, או תשתמש באובייקט יחיד.

אין לי רעיונות כי לא נתקלתי במקרים כאלה - אבל אם אתה צריך - אז תשתמש. הצורך בזה יכול לעלות כשעכשיו אתה נתקל במגבלה מסוימת.
לגבי שליחת 2 בקשות HTTP באותו הזמן מאותו אובייקט AJAX, מתברר שזה לא אפשרי. יתר על כן אתה מוגבל בכמות אובייקטי ה-AJAX שאתה רשאי ליצור ולשלוח מהם בקשות, כי בכל בקשה אתה יוצר חיבור בין המחשב של הלקוח לשרת, והחיבור הזה צורך לא מעט משאבים. How do I handle concurrent AJAX requests? שהגעתי אליו מ- Can I fire off 2 ajax instances?.



ציטוט:
במקור נכתב על ידי MatiM
ומה השיטה הטובה ביותר לעשות את זה?
הרי צריך לדעת איפה בדיוק "נתקעת" הבקשה.
בJS? בעיבוד בPHP? וכדומה.
אולי בכלל הקריאה מהמסד בעייתית? אבל אם כן, למה חלק מההודעות כן מוצגות כמו שצריך?
צריך לחשוב על דרך שתוכל להצביע על מקום הבעיה.

הייתי מנסה קודם כל לבצע את הבקשה לקובץ PHP "נקי" מכל קוד מסובך. הקובץ הזה צריך לכלול רק פונקציית sleep של 20 שניות. אם אתה מבצע בקשת HTTP נוספת בעזרת AJAX וזה לא מצליח - אז סימן שלוגיקת קוד ה-JS לא נכונה, וכנראה אתה מנסה לשלוח באמצעות אותו אובייקט AJAX בקשה נוספת, לפני שהאחרונה הסתיימה. יש אנשים ש- debugging זה מקצועם, אז תתחיל ללמוד ולנסות
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 27-02-2010, 19:56
  sniper2 sniper2 אינו מחובר  
 
חבר מתאריך: 06.05.04
הודעות: 297
בניתי צ'אט לא מזמן, אפילו פרסמתי אותו :)
בתגובה להודעה מספר 1 שנכתבה על ידי MatiM שמתחילה ב "AJAX - מה קורה בפועל?"

אפשר לעשות משהו גם רק עם JS+PHP, עם חדרים + שיחות פרטיות, הכול דורש השקעה ותכנון נכון, לגבי אחסון המידע, אני איחסנתי בקבצים, זה כמובן לא יעיל שיש לך 1000 משתמשים פעילים באתר, אבל יש לזה פתרונות כמובן, אפשר להשתמש באחד ממנועי הCACHE של PHP.

תקרא על APC או על MEMCACHE.

לגבי AJAX:

בInternet Explorer פעם האובייקט הגיע כרכיב בתוך MSXML(Microsoft XML Core Services) ולאחר מכן בגירסאות מתקדמות יותר הוא הגיע כActiveXObject שמתממשק לממשק IXMLHttpRequest אשר נעטף ע"י הרכיב של הMSXML.

זה כרקע למה שהולך/הלך ברקע של הרכיב.

מעבר לזה הוא עושה פעולות די בסיסיות, שליחה וקבלה של מידע, את המידע אתה יכול לקבל בכול פורמט כמעט כשהמקובלים בהם מטעמי נוחות ושליטה במידע הם JSON,XML,plain text אבל שוב אין בעיה כול מידע בplain text ולעבד אותו בשפת התסריט.

כמובן כשאתה מעביר XML אז טריוויאלי שתשתמש ביכולות הDOM של JS כדי לעבד את הXML לצרכים שלך.
שאתה משתמש בJSON(Javascript Object Native) שזה פורמט פשוט מאוד, אתה מקבל את המידע שלך מומר לאובייקט בJS כול מה שאתה צריך זה לעשות eval למחרוזת המתקבלת, ולעבוד איתה כמו אובייקט לכול דבר, יש ספריות מאובטחות שמתאימות לשימוש הזה.

מעבר לזה כשאתה שולח בקשה יש לך שליטה על המצבים שהבקשה נמצאת בהם, ואתה יכול לפעול בהתאם, המצבים ממוספרים מ0 עד 4

0 - הבקשה עדיין לא אותחלה.
1 - הבקשה אותחלה
2 - הבקשה נשלחה
3 - הבקשה במצב ביניים(עדיין נשלחת)
4 - הבקשה הסתיימה(נשלחה בהצלחה)

כדי לשלוט לדעת מה מצב הבקשה משתמשים במתודה readyState.

לאובייקט שלך יש גם אירוע (שבתוכו שולטים במצב הבקשה) לאירוע קוראים onreadystatechange (וכשמו כן הוא, מה קורה ברגע שהמצב של הבקשה משתנה).

אתחול הבקשה מתבצע באמצעות המתודה open שם אתה קובע מספר פרמטרים,
העמוד אליו אתה שולח את הבקשה
סוג השליחה - post,get
מצב השליחה - האם הבקשה תתחשב בתהליכים אחרים שרצים, או שתרוץ בצורה אסינכרונית.

לאחר אתחול הבקשה, אתה משתמש במתודה send ושולח את הבקשה.

אחרי שקראת את כול זה, גש ולמד על JQuery
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 04:37

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר