![]() |
php | הורדת קובץ
שלום,
יש לי בעיה קטנה בהורדת קובץ מהשרת אל המחשב בעזרת php. אני מצליח להוריד את הקובץ בצורה מושלמת והכל, הבעיה היחידה היא שצריך לחכות בעמוד ההורדה X זמן (בהתאם לגודל הקובץ), אם מנסים להוריד קובץ של 14 מגה לדוגמא, צריך לחכות הרבה זמן עד שמופיע חלון ההורדה. איך אפשר לעשות שזה יוריד ישר ? הקוד: PHP קוד:
הבעיה היא שהקובץ עובר על הלולאה ורק אז מציג את חלון ההורדה (אחרי שהוא מסיים לעבור על כל הלולאה). תודה רבה. |
נכון לעכשיו אני לומד PHP ואני בדיוק בשלב של הלולאות אם הבנתי נכון מהספר
בשביל לעשות את מה שאתה רוצה תצטרך להשתמש בלולאה do while. שמה שהיא עושה בעצם זה בצע כל עוד..היא שונה מלולאת ה while בזה שהתנאי שלה נבדק אחרי כל מעבר על הלולאה. אז אם הבנתי נכון, אני חושב שזה מה שתצטרך לעשות, PHP קוד:
|
תודה רבה על הניסיון לעזור,
אך כמובן שזה לא יפתור את הבעיה. |
ציטוט:
|
הפתרון שלו לא יפתור את הבעיה מסיבה פשוטה,
רק שכל הדף php מסתיים מוצג חלון ההורדה, כלומר הלולאה תבוצע ורק שהיא תסתים זה ידפיס את חלון ההורדה. |
בדקת?
מה שבעצם עשיתי פה הפכתי את לולאת ה while ל do while שקודם הפעולה תבוצע ורק לאחר מכן היא בודקת אותה.. אם הבנתי נכון זה מה שרצית, השאלה היא אם זה פועל..(זה אמור לעבוד) |
כמו שהסברתי למעלה זו לא הבעיה (וכן בדקתי, אף על פי שידעתי שזה לא יעבוד),
הבעיה היא שקודם כל הסקריפט טוען את העמוד ועובר על כולו ורק לאחר מכן מציג את חלון ההורדה, השאלה איך אפשר לעשות זאת אחרת. |
http://www.php.net/manual/en/function.flush.php
ולי זה יעזור לך... |
ה flush לא יעזור לו, הסיבה לכך היא פשוטה הגיוני שקובץ של מגה ירד מהר יותר מקובץ של 14 מגה. כדי להציג חלון הורדה הוא צריך לקרוא את כל הקובץ ובעזרת הכותרים המתאימים הוא מציג חלון הורדה במקום בעצם להציג את התוכן שלה קובץ שנקרא. זוהי פעולה נדרשת. מה שאתה יכול לעשות כדי למנוע את זה כדי שיציג את זה ישיר היא פעולת CACHE פעם אחת של הקובץ. לא משנה באיזה פונקציה תשתמש כדי לקרוא את הקובץ זה יקח זמן לקבצים גדולים.
פעם אחת תבצע שמירה של התוכן ב CACHE ולאחר מכן כל פעם שמשהו ינסה להוריד את הקובץ זה ישר יטען את זה מה CACHE במקום לקרוא את הכל ישירות. זה יחסוך המון זמן טעינה. |
ציטוט:
כל פעם שארצה שבנאדם יוריד מהאתר שלי קובץ גדול של-700Mb(סרט לדוגמא), אני אשמור במחשב של הבנאדם - 700Mb? נשמע ממש לא הגיוני. יוריד שני סרטים , אני אשמור 1.4Gb? נשמע קצת מטורף... אני בטוח שזו לא הדרך הנכונה לעשות את זה. |
כל הזמנים הם GMT +2. הזמן כעת הוא 15:52. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ