![]() |
הורדה משרת אחר, והצגת הורדה מהשרת שלי.
דברים שאני רוצה לציין מראש,
* חובה שיהיה דרך PHP. הנה הקוד, בעקרון מה שאני רוצה שעם טעינת הדף הקובץ שיורד ישלח אל הלקוח תוך כדי ההורדה של השרת, זאת אומרת שהגולש לא יצטרך לחכות להורדת הקובץ המלאה אלא שישר ישלח אותו. הקוד הזה מבצע את זה בצורה טובה, אבל הבעיה היא מהירות ההורדה. PHP קוד:
אשמח אם משהו יוכל לעזור לי, תודה! |
עד כמה איטי זה?
ניסית להוריד ישירות מהשרת (ללא PHP) והגעת למהירויות גבוהות יותר? ניסית להריץ את זה על שרת אחר והגעת למהירויות גבוהות יותר? ניסית לנטר את התעבורה בזמן אמת ולראות על איזה מהירות השרת מוריד את הקובץ? השאלה היא האם אתה בטוח שהמהירות האיטית שאתה חווה בהכרח קשורה לקוד(?). |
אני הייתי עושה את זה עם curl writer function
http://php.net/manual/en/function.curl-setopt.php חפש את CURLOPT_WRITEFUNCTION בגדול אתה כותב פונקציה שמדפיסה )echo( את מה שהיא קיבלה בפרמטר השני, ואז מחזירה את ה strlen שלו. אין צורך להשתמש בurl_multi בנוגע למהירות - קח בחשבון שהשרת שלך מוריד מהשרת המרוחק ואז שולח ללקוח. זה דבר שיקר יחסית במשאבים וברוחב פס. ותבדוק את השימוש ב CURLOPT_BUFFERSIZE, אולי זה יכול להשפיע על המהירות. |
ציטוט:
המהירות שלי היא 12MB. ציטוט:
--- בדקתי קצת בגוגל, לא הבנתי איך להשתמש בה, באיזה צורה ולמה להשתמש בה. אשמח לקטע קוד שיסביר לי בקצרה שיוכל להבהיר לי את העניין הזה וגם למה דווקא כדאי להשתמש בה?(WRITE_FUNCTION) |
זה אמור לעבוד:
http://pastebin.com/82za8MXw WRITE_FUNCTION בגדול זה אומר שCURL לא שומר בעצמו את המידע שיורד(במקרה הזה קובץ) אלא שולח לך אותו בחלקים חלקים(תוך כדי ההורדה) ואתה צריך לעשות איתו מה שאתה רוצה(נניח לשמור לקובץ) ולהחזיר לו את מספר הבייטים שהספקת לשמור. במקרה שלנו במקום לשמור לקובץ אנחנו עושים ECHO כדי לשלוח למשתמש תוך כדי ההורדה של השרת שלנו משרת המקור. אפשר לעשות כל מיני טוייקים של הDOWNLOAD SPEED משרת המקור (אפשר גם לעקוב אחריה) ולעשות אופטימציה לכל התהליך |
ציטוט:
וניסיתי את הקוד שלך, הוא שולח לי את הקובץ להורדה רק לאחר שככל הנראה הוא נטען לגמרי, והוא מוחזר כקובץ ריק(0 Bytes). |
איצי בעבר נתקלתי בקוד שאדיר ^^ הכין שפעל במהירות טובה בשרת מסויים ובשרת אחר באותו מצב כמו שאתה מגדיר כרגע , אני מניח שהבעיה כמו שאדיר אמר בשרת ולא בדיוק בקוד. (הקוד היה מבוסס על LEECH מאתרים)
|
ציטוט:
אני בטוח בזה שהקוד אינו תקין, ואם כך תוכיחו שאני טועה אוכל לדעת מאיזה סיבה? |
את הקוד לא אוכל להציג בפנייך.
כן אוכל להפנות אותו בחזרה לתגובה הראשונה שלי - אם תתעמק קצת בשאלות ותבדוק את הדברים יכול להיות שתמצא את מקור הבעיה או לפחות תתקרב אליו. בהצלחה :). |
ציטוט:
^^^ |
כל הזמנים הם GMT +2. הזמן כעת הוא 20:12. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ