![]() |
בעיה עם כניסות לפי IP
אהלן :P
שמעו יש לי בעיה קטנה עם כניסות לפי IP ומה הבעיה אתם שואלים? שזה פשוט דופק את המסד.. אם נכנסים לאתר ביום כמה אלפים יחודיים, אז ממ.. אתם יודעים זה מעמיס בטירוף אז יש איזה רעיון להוריד את העומס או משו? תודה8-* |
אם כבר הIP נכנס אז תעדכן אותו במקום להוסיף שורה?
ושיהיו לך כמה אלפים יחודיים ביום תבוא לביקור במסנג'ר =) |
ציטוט:
אבל שוב בוא ניקח מצב שיש אלף גולשים ייחודיים ביום באתר מסויים (לאו דווקא שלי, בוא נניח של לקוח שלי..) אז מה אני עושה? אני פשוט חושב על סיטואציות ורוצה לבנות תמערכת בצורה הכי יעילה |
דבר ראשון זה לא בושה לעשות שימוש בקובץ TXT.
אם אתה מתעקש על מסד אתה פשוט מוסיף לו משפט תנאי, שבמידה וכבר קיים IP כזה במסד הנתונים (אם הIP של הגולש שניכנס מתאים לאחד מרישומי הIP שבמסד) אם כן, אל תוסיף שורה חדשה \ נוספת, אחרת, תוסיף שורה חדשה עם הIP. |
ציטוט:
לא חשבתי על TXT מקודם חח יותר יעיל בעניין הזה ממסד לא? תודה8-) |
למה נראה לך שעבודה מול קבצי TXT היא פחות מעמיסה מעבודה מול מסד?
* קבל IP למשתנה $IP * שלח שאילתה האם $IP קיים במסד * אם כן אזי: * עדכן את הרשומה של ה $IP ושנה את `times` ל `times`+1 * אחרת * הכנס רשומה חדשה הכוללת את $IP מה הבעיה? ואם תרצה להגזים.. תוכל ליצור קוקי, אם הקוקי קיים.. כלומר הוא ביקר באתר ואין צורך להוסיף אותו (אבל תזכור ישש מחשבים עם רשת.) |
ציטוט:
כאילו.. טוב עזבו חח אני יעשה את זה וזהו.. לא הבנתם אותי |
לא חייב לאכסן במסד התונים, אפשר לאכסן בקובץ טקסט.
להשתמש ב fopen ו fwrite, ובשביל לדעת כמה IP יש אפשר לעשות explode ואז count. לדוגמא: אסור לתת קודים |
ציטוט:
יופי חח כי זה מה שהוא אמר אבל גיא עכשיו אמר שעבודה מול DB יותר יעילה ופחות מעמיסה|: בע סיבכתם |
לא ראיתי את התגובות, זה קפץ ישר לסוף העמוד :P
וד"א הוא לא אמר שזה יותר יעיל.. הוא פשוט אמר שעבודה בקבצי טקסט לא פחות מעמיסה. |
אז שתדע..עבודה עם קבצים יותר מעמיסה והסיבה :
בשביל לפתוח קובץ הוא צריך לטעון את כולו לזיכרון של המחשב.. בעת הפתיחה, לשמור עותק שלו.להביא את ה POINTER לסוף הקובץ, להוסיף את מה שהמשתמש רוצה ואז לשמור מחדש... יותר יעיל ? ממש ממש לא. לגבי הזה.... יש לך דרך אפילו יותר פשוטה, שאולי תחסוך לך כמה שאילתות קודם כל תעשה UPDATE userip WHERE ip=$IP SET lastvisit=$time (סתם דוגמא) ואז תבדוק אם יש שורות שמושפעות מזה עם mysql_affected_rows אם הוא לא מחזיר כלום.. סימן שזה לא קיים ואז תעשה INSERT רוצה לייעל את זה יותר ? תשתמש ב COOKIE... תבדוק אם קיים עוגייה שאתה יצרת, אם כן- אל תעשה כלום אם לא תנסה לעדכן (אולי הדפדפן של המשתמש לא תומך בעוגיות) ואז אם לא קיים במסד תכניס רוצה לייעל עוד קצת ? תוסיף גם עם SESSION וחסכת לך כמה מאות שאילתות ביום..... (כמובן עבור 1000 גולשים לא ייחודיים) |
חוץ מהעובדה שזה טוען את הקובץ טקסט לזכרון
תחשוב על זה שאתה יכול לגעת בקובץ רק פעם אחת באותו זמן ז"א יש לך נעילה מלאה על כל הקובץ. חשוב מאד לדאוג שאתה יוצר את הטבלה שלך מסוג InnoDB, מה שיתן לך שיפורים בביצועים, כי אתה יכול לעבוד על כמה שורות בבת אחת, הכוונה שיש לך נעילה ברמת השורה ולא הטבלה. אני בטוח שאם רק תשנה את הטבלה לInnoDB כבר תשים לב לשיפור בביצועים אחרי זה, אני בטוח שאפשר לשפר את השאילתות שלך שיעבדו בצורה יותר יעילה, נפנה לזה אח"כ |
RS324 תודה רבה אחי :)
ו omercnet מזה InnoDB? |
ציטוט:
שהם בעיקרון MYISAM , INNODB,MEMORY ועוד כמה לא זוכר בדיוק איזה.... |
ומה זה כאילו יותר מהיר?
|
דניאל למה שלא תשתמש בשורה אחת?
תפריד עם פסיקים או סימן אחר ותשתמש בזה,יחסוך לך הרבה שורות. של מידע. |
ציטוט:
שאם הוא יעשה ככה זה יותר "בזבזני" כי שהוא יוסיף עוד אי פי הוא יטען את כל השורה ורק אז יוסיף את ה IP החדש וזה יבזבז הרבה תעבורה עד כמה שאני יודע... |
ציטוט:
אבל יכול להיות לו כפילויות של IP וגם בעיות במשיכה של הנתונים איך שאמרתי לו באחד הפוסטים - זה הדרך היעילה ביותר. |
ציטוט:
|
ציטוט:
אולי יעמיס על השרת אבל מה הקשר לתעבורה? 8-* |
כל הזמנים הם GMT +2. הזמן כעת הוא 08:43. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ