שלח תשובה

זירת השאלות

320
צפיות
12
תשובות

יתרונות בין שמירה ךתקיה לבין…..

,‏ 12 באוגוסט, 2006

מה ההבדל בין שמירת קבצים בתקיה ךבין שמירת קבצים בבסיס נתונים?

צריך תשבוה מקצועית


תודה למנהלי ווסבמאסטר שעזרו לי הרבה

תגיות:

12 תשובות

  1. JUBRANO הגיב:

    שאלה בנושא אחר
    לגבי המחיקה גם צריך להשתמש ב Server.MapPath , נכון?

    שאלה  2

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

    איך אני משלב את זה עם המחיקה גם הקבצים שהעלתי לשרת?

    שאלה 3

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

    ב HTML החזרה כך /..
    איך החזרה בשרת?
    למשל אם אני רוצה למחוק דרך ה FSO או דרך ה ASPUPLOAD

    יש אפשרות חוץ מהשילוב עם ה Server.MapPath?

    תודה

  2. JUBRANO הגיב:

    להתיחס לשאלות האלה, בו יותר מובנות
    1
    באיזי מצב  התקיה תהיה קיימית פיזיזת  ובאזיז מצב  תהיה  וירקואלית על השרת?

    2
    אם התקיה נמצאת על השרת  זה לא אומר שהיה קיימת באמת?  אם כן איך עושים אותה שתהפוך לאמתית?

    3
    לגבי אוביקט ASPUPLOAD
    מתי יש אפשרות להשתמש רק ב SAVE או ב DELETE בלי  ה Server.MapPath או שאין אפשרות
    ?

    4
    לגבי אוביקט ASPUPLOAD
    במחיקה גם צריך להשתמש ב Server.MapPath , נכון?

    5
    איך עוישם חזרה אחורה?
    נגיד הקבצים שאני שומר בתקיה נשמרים בתקיה מחוץ לתקיה של האפליקציה

    ב HTML החזרה כך /..
    איך החזרה בשרת?
    למשל אם אני רוצה למחוק דרך ה FSO או דרך ה ASPUPLOAD

    יש אפשרות חוץ מהשילוב עם ה Server.MapPath?

    6
    מה ההבדל בין שמירת קבצים בתקיה לבין שמירת קבצים בבסיס נתונים?

  3. JUBRANO הגיב:

    עוד שאלה לגבי מחיקת קבצים
    לגבי אוביקט ASPUPLOAD

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

    איך אני משלב את זה עם המחיקה של קבצים שהעלתי אותם לתקיה בשרת?

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

    או רק עם העלאת הקבצים לבסיס נתונים ואז למחוק אותם מהבסיס נתונים?

    השאלה היא האם גם טוב להעלות קבצים כבדים לבסיס נתונים?

  4. זהר פלד הגיב:

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

    2) התשובה נגזרת מהתשובה הראשונה – כל תיקיה שעל השרת קיימת עליו פיזית.

    3) אין אפשרות – קוד ה asp תמיד רץ במסגרת התיקיה הוירטואלית – ולכן יש צורך להשתמש ב Server.MapParh כדי לקבל את הנתיב הפיזי של התיקיה.

    4) כן.

    5) רוב השרתים לא מאפשרים הגדרה של /.. ב Server.MapPath, מסיבות אבטחה.
        באלו שכן מאפשרים חזרה למעלה בעץ התיקיות, היא מוגדרת בדיוק אותו דבר – /..

    6) לא מומלץ לשמור קבצים במסד הנתונים. הרבה יותר יעיל לשמור אותם בתיקיה על הדיסק מאשר לשמור אותם במסד הנתונים גם מבחינת השמירה, וגם מבחינת הקריאה לקובץ.

  5. JUBRANO הגיב:

    לגבי תשובה 5 ו6
    לתשובה 5

    אם בשרת לא מאפשרים הגדרה של /..

    אז צריך לסיםם את תקית שמעלים אליה הקבצים ליד קובץ שממנו מעלה את הקבצים ? הכון !!!

    ואם שרת מאפשר את ה /..
    איך בדיוק כותבים את המיקןם כלומר  לא צריך להתיחס ל C
    לכתוב ישר כך  "folder/filename/.."  ?

    לתשובה 6
    למה לא מומלץ

    השאלה הזאת קשורה גם לשאלה שאמר שהיא לא ברורה

    אם אני וצה למחוק קבצים שנמצאים בתקיה על השרת

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

    אם אני מעלה את הקבצים לבסיס נתונים
    אז אני יכול למחוק אותם על כל הפרטים

    אבל אם אני מעלה נתונים לבסיסי נתונים וגם קובץ

    האם יש אפשרות למחוק באותו קובץ שאני מוחק מהבסיס נתונים גם חמחוק שם הקובץ שישך לאותם נתונים שנמצאים על בסיס הנתונים?

    תודה מראש

  6. aviadfe הגיב:

    תשובות – כמה תוספות והרחבות…
    ידידי היקר שלום.

    היות וזהר ענה, אני רק ארחיב מעט:

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

    תיקיה וירטואלית היא תיקיה שאינה קיימת פיזית, אך היא מפנה לספריה פיזית אחרת. כלומר, בנית אתר, הושבת אותו למשל על: c:Inetpubwwwrootmaster
    וכעת אתה רוצה לגשת דרך האינטרנט לאותה ספריית master, אתה יוצר בתוך שרת IIS תיקיה וירטואלית שנגדי קראת לה MySite, ואתה מקשר אותה לנתיב הפיזי הנ"ל. כעת, כאשר תפעיל את הדפדפן ותכתוב את ה- IP או דומיין השרת + הנתיב הוירטואלי, למשל, נגיד שרכשת את הדומיין http://www.Site.com, אם תכתוב:
    http://www.Site.com/MySite, אתה תגיע היישר לתוך אותה ספריה פיזית, אבל בייחוס הוירטואלי שלה. צריך לזכור שזה לא ממש הגעה לתוך הספריה הפיזית, אלא הגעה וירטואלית דרך IIS. זאת אומרת שלא תוכל כעת לצאת החוצה לספריות אחרות במחשב המיוחסות לה.

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

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

  7. aviadfe הגיב:

    המשך…
    . בעקרון, אני השתמשתי באתרים שלי, שבהם הפעלתי ASPUPLOAD, בנתיב הפיזי אל הקבצים שלי. לא קשה לגלות מהו, אם אתה יודע כיצד להריץ קוד שיגלה לך את הנתיב הפיזי. server.mappath בא פשוט לחסוך לך את זה, ולאפשר לך להשתמש בחוקיות וירטואלית, כי כל הייחוס שלך בתוך דפי האתר – קריאה לדפים אחרים, הפעלת קבצי JS או CSS, כולם נעשו דרך נתיב וירטואלי. המטרה היא לאפשר לך להתייחס גם בעבודה מול תיקיות פיזיות וכתיבה לתוכן, בשמם הוירטואלי.
    אצל מרבית השרתים שאני עבדתי איתם, ניתן לקרוא לספריה דרך אובייקטי העלאת קבצים, גם בנתיב הפיזי שלה, אם אתה יודע מהו.

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

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

    אם כוונתך, שיש לה תיקיית בסיס ואפליקציה שיושבת בתיקיה בתוכה, ואתה רוצה לצאת ולגשת כעת לתיקיה אחרת בתוך תיקיית הבסיס, אז בד"כ ניתן לעשות זאת בשתי צורות:
    הצורה הנפוצה היא סימון: /.. עבור כל תיקיה. כלומר, אם ספריית הבסיס שלי נקראת: MySite וכעת אני נמצא בתוך ספריית MyPages, ואני רוצה להגיע מתוכה לספריית MyApp שנמצאת על ספריית הבסיס, אני עושה זאת כך:
    MyApp/..  – זה כמובן משתלב עם server.mappath

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

    ב NET., זה יותר קל כי יש ייחוס חדש בסימן: /~ , שקורא תמיד לספריית הבסיס.

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

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

    7. ברגע שהעלית משהו לתוך שדה ברשומה במסד נתונים, אינך צריך להתייחס אליו יותר כאל קובץ, אלא כאל שדה במסד נתונים. שדות כאלו ניתנים לעדכון ולמחיקה על ידי שאילתות SQL. אם אתה רוצה למחוק רשומה שלימה, זה לא משנה אם יש בתוכה קובץ, או לא, המחיקה תיעשה על ידי הפקודה DELETE בSQL. אם אתה רוצה למחוק תוכן של שדה ספציפי אתה עושה לו UPDATE.

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

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

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

  8. JUBRANO הגיב:

    הבנתי מה הקטע אבל
    יענו עאשר אני מקבל שטח אחסום עם שם משתמש וסיסמה שטח האחסום הזה הוא  הIIS? כל תקיה שאני מוסיף אותה בשטח האחסום היא תקיה וירטואחית נכון!

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

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

    למה צריך לשמור נתיב?

    בקשר לגישה לתקיה , אם הרשת לא מאפשר גישה ל /.. כמו שאמר זהר
    עדין זה יעבוד  דרך הServer.MapPath?

    בקשר למחקיה

    איך אני אוכל למחוק נגיד קבצים מתקיה שהעלאתי אותם אליה

    כלומר יש אפשרות למחוק על יד סימון CHECKBOX  או לרא משנה אפשר דרך אחרת

    השאלה היא יש אפשרות למחוק קבצים שונים על ידי בחירה שאני בוחר?

    אני נסיסת למשל למחוק קבצים דרל השימוש ב  SELECT

    לבחור קובץ שאני רותה למחוק ולמחוק אותו

    אבל אומר לי השנתיב לא נכון

    אני שמתי משתנה בתוך הנתיב , השמתנה אמור לתת את השם שך הקובץ שאני בוחר
    על ידי ה SELECT

    אבל לא עבד

  9. aviadfe הגיב:

    לא ולא ולא.
    ראשית:

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

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

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

    ספריה וירטואלית היא המפה שלך כדי להגיע לספריה הפיזית.

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

    יום טוב

  10. JUBRANO הגיב:

    הבנתי אותך עכוש
    אבל כל  זה בגלל שאני לא יודע את הנתיב האמיתי של התקיה  ,

    אם הייתי יודע את הנתיב הנכון של התקייה אז אני יכול להשתמש ב SAVE לבד

    נכון?

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

    רק השאלות הללו אאם אפשר לענות עליהם בזמך הפנוי

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

    למה צריך לשמור נתיב?

    בקשר לגישה לתקיה , אם הרשת לא מאפשר גישה ל /.. כמו שאמר זהר
    עדין זה יעבוד  דרך הServer.MapPath?

    בקשר למחקיה

    איך אני אוכל למחוק נגיד קבצים מתקיה שהעלאתי אותם אליה

    כלומר יש אפשרות למחוק על יד סימון CHECKBOX  או לרא משנה אפשר דרך אחרת

    השאלה היא יש אפשרות למחוק קבצים שונים על ידי בחירה שאני בוחר?

    אני נסיסת למשל למחוק קבצים דרל השימוש ב  SELECT

    לבחור קובץ שאני רותה למחוק ולמחוק אותו

    אבל אומר לי השנתיב לא נכון

    אני שמתי משתנה בתוך הנתיב , השמתנה אמור לתת את השם שך הקובץ שאני בוחר
    על ידי ה SELECT

    אבל לא עבד

    תודה רבה

  11. JUBRANO הגיב:

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

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

    האם הכוונה מובנת?

שלח תשובה

חדש! אחסון אתרים של וובמאסטר

שירות אחסון אתרים
המקצועי של וובמאסטר!

מומחים באירוח אתרי
WordPress, Joomla, Drupal

  • שרתי לינוקס עם CloudLinux, LiteSpeed
  • 1GB דיסק SSD, 10GB תעבורה חודשית
  • ממשק ניהול cPanel, תעודת SSL חינם

עכשיו במחיר היכרות:
רק 420 ש"ח לשנה!