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

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



  #16  
ישן 27-10-2005, 08:53
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
בתגובה להודעה מספר 1 שנכתבה על ידי hez שמתחילה ב "עזרה: יצירת אובייקט שישאר זמין לכל הדפים באתר"

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

התיקון של הבקשה יהיה: "ברצוני ליישם מערכת אשר קיים בה חלק שצריך להיות זמין לכלל הגולשים. שלא כמו session ב-php, אשר זמין ספציפית לכל גולש, אני מעוניין ברכיב אשר יהיה זמין לכלל הגולשים, וכל גולש חדש אשר נכנס לאתר יוכל לקבל נתונים ולהעביר נתונים אל הרכיב המדובר". (למי שמגיע מרקע של asp, מדובר במשהו בסגנון של application, אשר הגישה אליו הינה עבור כלל הגולשים, ולא לפי גולש ספציפי).

הפיתרון, כפי שערן כבר הזכיר בתגובה קודמת באשכול, יכול להתבצע באמצעות פונקציות זיכרון שיתופי, או Shared Memory Function. כנס לקישור וקרא את ההסברים המצויים שם. הנושא אינו נושא פשוט, ובמידה ואתה מתכנת מתחיל אני לא ממליץ לך לגשת אליו.

שוב, במידה וטעיתי בהבנת דבריך, אשמח אם תבהיר את עצמך בצורה טובה יותר

בברכה, דקל
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 27-10-2005, 15:37
  hez hez אינו מחובר  
 
חבר מתאריך: 26.10.05
הודעות: 9
הגדרת מצוין, אבל הפתרון אינו מספק
בתגובה להודעה מספר 16 שנכתבה על ידי דקל שמתחילה ב "הרשה לי לתקן מעט את הבקשה..."

אכן, הגדרת היטב את הבעיה.

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

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

שאלתי הייתה כיצד ניתן לבצע זאת בPHP.

אבל הפתרון שהצעת אינו יעיל מכיון שSHARED MEMORY נותן אפשרות רק לשתף מידע (ניתן לקרא ולכתוב נתונים לבלוק, כמו לקובץ דיסק) ולא לשתף משתנים, כך שאין בו פתרון לבעיה.

(יש גם את הפונקציה הבאה: http://www.php.net/shm_get_var אך לפי מה שכתוב כאן http://il.php.net/manual/en/ref.sem.php אינו קיים תחת WINDOWS.

[תיכנתי בשפות רבות לפני שהגעתי לPHP, כך שאינני חסר רקע בתיכנות]
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #18  
ישן 27-10-2005, 17:29
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
בתגובה להודעה מספר 17 שנכתבה על ידי hez שמתחילה ב "הגדרת מצוין, אבל הפתרון אינו מספק"

אשמח לדוגמא של מה שביצעת ב ASP, כיוון שאולי אני עדיין לא יורד לסוף דעתך.
כשאתה מדבר על "המון חישובים לכל פריט"... אפשר סדר גודל של כמות החישובים המדוברת?
האם מדובר בסדר גודל של מספר המכיל ספרה אחת? או עשר ספרות? או שאולי מדובר ב-100?
כשאתה מריץ קוד כלשהו ב PHP הוא נטען לזיכרון ורץ שם, ולכן כמות הפעולות החישוביות זה דבר זניח שאנחנו נוטים להתעלם ממנו (אלא אם מדובר בהמון פעולות בזבזניות כמובן).
בכל אופן, אתה מוזמן לבנות את הקוד שלך ולהוסיף את החלק הבא על מנת לחשב את זמן הריצה של הקוד:
קוד PHP:
 function float_mt() {
   
$t explode(" "microtime());
   return 
bcadd($t[0], $t[1], 4);
}

$start float_mt();
// rest of code here
$end float_mt();

$total $end $start;
echo 
"Page generated in $total seconds.\n"
כמובן שכל הקוד שלך צריך להיכנס איפה שכרגע מופיעה ההערה
תריץ את הסקריפט הנוכחי שלך ותבדוק תוך כמה זמן הוא מסיים לרוץ...
שים לב שאני מדבר על חישוב ספציפי לפריט אחד... במידה ויש לך המון שאילתות בדף המדובר, או שאילתות שמוציאות לך יותר אינפורמציה ממה שאתה צריך, הן יכולות להיות גורם מכריע במהירות יצירת הדף.

בלי קשר, שוב אני מבקש לדעת באיזה אובייקט ב ASP מדובר, כיוון שלא שמעתי על אובייקט כזה (למעט application, שאגב מאותחל בכל איתחול של השרת... דבר שלפעמים קורה פעם בשבוע ואף פחות בשרתי windows) שלאחר האיתחול שלו נותן גישה אליו לכל המשתמשים ומכיל כמות גדולה של אינפורמציה שעברה המון חישובים....

משתנה הוא בסה"כ מקום בזיכרון המכיל מידע, על פי המידע שאתה מכניס לו. המשתנה יכול כמובן להשתנות במהלך הריצה של הקוד. לא מבין את מה שכתבת בנוגע לזה ש shm לא עוזר לך פה... זה בדיוק מה שאתה צריך. במקום לשמור את המידע שעבר חישובים באיזה "משתנה" כלשהו, אתה שומר אותו בזיכרון, רק שהפעם יש לך גישה אליו מכל מקום ומכל דף שרץ... (שזה בעצם מה שאתה רוצה, לא?)

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

שים לב שבמערכת בה אתה גולש כרגע יש דטאבייס (אם אני לא טועה מדובר ב mysql) שמכיל את הטבלאות, ובכל פעם שגולש ניגש לפורום/אשכול וכו' הטבלאות המתאימות נקראות בהתאם.
כמובן ש mysql בתור דטאבייס מתקדם מכיל מערכת caching המיועדת לגישה מהירה לנתונים, וחיסכון בזמן בקריאה חוזרת של טבלאות, ובנוסף ניתן להריץ מערכות caching נוספות אשר מייעלות את מהירות הגישה לנתונים... אבל אלו כבר דברים שלא תמיד תלויים בך בתור מתכנת

בברכה, דקל
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #21  
ישן 30-10-2005, 05:37
  hez hez אינו מחובר  
 
חבר מתאריך: 26.10.05
הודעות: 9
יש לי פיתרון (אם אפשר לקרוא לזה כך)
בתגובה להודעה מספר 1 שנכתבה על ידי hez שמתחילה ב "עזרה: יצירת אובייקט שישאר זמין לכל הדפים באתר"

מצאתי פיתרון לבעייתי
שימוש באובייקט ACTIVEX חיצוני שיחזיק את החיבור ומתן גישה אליו מכל הדפים.
(הדבר דורש תיכנות מתקדם בVB שהוא מחוץ למסגרת הפורום)

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

מי שמעונין ביותר פרטים שיפנה אלי באישי
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #24  
ישן 30-10-2005, 09:22
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 23 שנכתבה על ידי hez שמתחילה ב "תוספת הסבר"

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

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

לכן אני מציע שתשמור את המידע בקובץ או במסד נתונים, ולאחר חלקיק שניה, כשגולש נוסף יצרוך את הנתונים לקריאה הוא יקבל זאת בקלות באמצעות שליפת המידע מהקובץ או מהטבלה, יבצע את השינויים הנדרשים, ושוב יחזיר את המידע לקובץ או לטבלה.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #26  
ישן 30-10-2005, 11:53
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 25 שנכתבה על ידי hez שמתחילה ב "אינני יודע מי לא הבין את מי"

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

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

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

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

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

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

יום טוב
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

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

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

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