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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 09-12-12, 14:58   # 1
איציק ברבי
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 970

איציק ברבי לא מחובר  

הורדה משרת אחר, והצגת הורדה מהשרת שלי.

דברים שאני רוצה לציין מראש,

* חובה שיהיה דרך PHP.

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

הקוד הזה מבצע את זה בצורה טובה, אבל הבעיה היא מהירות ההורדה.

PHP קוד:
function download($url,$name){ 
        
$ch curl_init($url);
        
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
$mh curl_multi_init();
        
$active null;
        
curl_multi_add_handle($mh,$ch);
        do {
            
$mrc curl_multi_exec($mh$active);
        } while (
$mrc == CURLM_CALL_MULTI_PERFORM);
        while (
$active && $mrc == CURLM_OK) {
            if (
curl_multi_select($mh) != -1) {
                do {
                    
$mrc curl_multi_exec($mh$active);
                } while (
$mrc == CURLM_CALL_MULTI_PERFORM);
            }
            
header('Content-Description: File Transfer');
            
header("Content-Disposition: attachment; filename=".$name);  
            
readfile(curl_multi_getcontent($ch));        
        }
        
curl_multi_remove_handle($mh$ch);
        
curl_multi_close($mh);
    } 
ניסיתי לבצע הורדה פשוטה באמצעות שליחת בקשה בcURL והוצאת הפלט דרך readfile (curl_exec()) ולא דרך curl_get_multicontent()...

אשמח אם משהו יוכל לעזור לי, תודה!
__________________

איציק ברבי - שירות לקוחות
כתובת אתר: http://build-net.co.il/
איימל: Support@build-net.co.il
טלפון: 052-3937296.
  Reply With Quote
ישן 09-12-12, 15:07   # 2
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

עד כמה איטי זה?
ניסית להוריד ישירות מהשרת (ללא PHP) והגעת למהירויות גבוהות יותר?
ניסית להריץ את זה על שרת אחר והגעת למהירויות גבוהות יותר?
ניסית לנטר את התעבורה בזמן אמת ולראות על איזה מהירות השרת מוריד את הקובץ?

השאלה היא האם אתה בטוח שהמהירות האיטית שאתה חווה בהכרח קשורה לקוד(?).
  Reply With Quote
ישן 09-12-12, 15:09   # 3
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

אני הייתי עושה את זה עם curl writer function
http://php.net/manual/en/function.curl-setopt.php

חפש את CURLOPT_WRITEFUNCTION

בגדול אתה כותב פונקציה שמדפיסה )echo( את מה שהיא קיבלה בפרמטר השני, ואז מחזירה את ה
strlen שלו.

אין צורך להשתמש בurl_multi

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

ותבדוק את השימוש ב CURLOPT_BUFFERSIZE, אולי זה יכול להשפיע על המהירות.
  Reply With Quote
ישן 09-12-12, 15:32   # 4
איציק ברבי
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 970

איציק ברבי לא מחובר  

ציטוט:
נכתב במקור על ידי xPerfection צפה בהודעה
עד כמה איטי זה?
ניסית להוריד ישירות מהשרת (ללא PHP) והגעת למהירויות גבוהות יותר?
ניסית להריץ את זה על שרת אחר והגעת למהירויות גבוהות יותר?
ניסית לנטר את התעבורה בזמן אמת ולראות על איזה מהירות השרת מוריד את הקובץ?

השאלה היא האם אתה בטוח שהמהירות האיטית שאתה חווה בהכרח קשורה לקוד(?).
הנסיון שלי עם שליחת בקשה רגילה באמצעות curl, היה בסביבות ה 400KB לשנייה.
המהירות שלי היא 12MB.


ציטוט:
נכתב במקור על ידי בניה צפה בהודעה
אני הייתי עושה את זה עם curl writer function
http://php.net/manual/en/function.curl-setopt.php

חפש את CURLOPT_WRITEFUNCTION

בגדול אתה כותב פונקציה שמדפיסה )echo( את מה שהיא קיבלה בפרמטר השני, ואז מחזירה את ה
strlen שלו.

אין צורך להשתמש בurl_multi

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

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

--- בדקתי קצת בגוגל, לא הבנתי איך להשתמש בה, באיזה צורה ולמה להשתמש בה.

אשמח לקטע קוד שיסביר לי בקצרה שיוכל להבהיר לי את העניין הזה וגם למה דווקא כדאי להשתמש בה?(WRITE_FUNCTION)
__________________

איציק ברבי - שירות לקוחות
כתובת אתר: http://build-net.co.il/
איימל: Support@build-net.co.il
טלפון: 052-3937296.

Last edited by איציק ברבי; 09-12-12 at 15:50..
  Reply With Quote
ישן 09-12-12, 16:32   # 5
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

זה אמור לעבוד:
http://pastebin.com/82za8MXw

WRITE_FUNCTION בגדול זה אומר שCURL לא שומר בעצמו את המידע שיורד(במקרה הזה קובץ) אלא שולח לך אותו בחלקים חלקים(תוך כדי ההורדה)
ואתה צריך לעשות איתו מה שאתה רוצה(נניח לשמור לקובץ) ולהחזיר לו את מספר הבייטים שהספקת לשמור.
במקרה שלנו במקום לשמור לקובץ אנחנו עושים ECHO כדי לשלוח למשתמש תוך כדי ההורדה של השרת שלנו משרת המקור.
אפשר לעשות כל מיני טוייקים של הDOWNLOAD SPEED משרת המקור (אפשר גם לעקוב אחריה) ולעשות אופטימציה לכל התהליך

Last edited by בניה; 09-12-12 at 16:38..
  Reply With Quote
ישן 09-12-12, 20:05   # 6
איציק ברבי
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 970

איציק ברבי לא מחובר  

ציטוט:
נכתב במקור על ידי בניה צפה בהודעה
זה אמור לעבוד:
http://pastebin.com/82za8MXw

WRITE_FUNCTION בגדול זה אומר שCURL לא שומר בעצמו את המידע שיורד(במקרה הזה קובץ) אלא שולח לך אותו בחלקים חלקים(תוך כדי ההורדה)
ואתה צריך לעשות איתו מה שאתה רוצה(נניח לשמור לקובץ) ולהחזיר לו את מספר הבייטים שהספקת לשמור.
במקרה שלנו במקום לשמור לקובץ אנחנו עושים ECHO כדי לשלוח למשתמש תוך כדי ההורדה של השרת שלנו משרת המקור.
אפשר לעשות כל מיני טוייקים של הDOWNLOAD SPEED משרת המקור (אפשר גם לעקוב אחריה) ולעשות אופטימציה לכל התהליך
למה אתה מתכוון ל טוויקים של download speed?

וניסיתי את הקוד שלך, הוא שולח לי את הקובץ להורדה רק לאחר שככל הנראה הוא נטען לגמרי, והוא מוחזר כקובץ ריק(0 Bytes).
__________________

איציק ברבי - שירות לקוחות
כתובת אתר: http://build-net.co.il/
איימל: Support@build-net.co.il
טלפון: 052-3937296.
  Reply With Quote
ישן 09-12-12, 20:53   # 7
Steve-Web
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Nov 2011
הודעות: 653

Steve-Web לא מחובר  

איצי בעבר נתקלתי בקוד שאדיר ^^ הכין שפעל במהירות טובה בשרת מסויים ובשרת אחר באותו מצב כמו שאתה מגדיר כרגע , אני מניח שהבעיה כמו שאדיר אמר בשרת ולא בדיוק בקוד. (הקוד היה מבוסס על LEECH מאתרים)
__________________
www.kyd.co.il,www.shiromika-lambretta.com, www.notary-attorney.co.il,www.bitilan1.com, http://funjoy.co.il/,http://djyanivo.com,
http://פסולתאלקטרונית.com/ , http://shiromika.com/, ועוד. עוסק המון בתחום אבטחת אתרים.בעלים של חברת Steve-Web ומתכנת ראשי.מתקן ומשדרג אתרים קיימים.ליצירת קשר. 0526974757-עדן.
  Reply With Quote
ישן 09-12-12, 20:58   # 8
איציק ברבי
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 970

איציק ברבי לא מחובר  

ציטוט:
נכתב במקור על ידי Steve-Web צפה בהודעה
איצי בעבר נתקלתי בקוד שאדיר ^^ הכין שפעל במהירות טובה בשרת מסויים ובשרת אחר באותו מצב כמו שאתה מגדיר כרגע , אני מניח שהבעיה כמו שאדיר אמר בשרת ולא בדיוק בקוד. (הקוד היה מבוסס על LEECH מאתרים)
אשמח לקבל קישור לאותו הקוד על מנת שאוכל לאבחן אותו,
אני בטוח בזה שהקוד אינו תקין, ואם כך תוכיחו שאני טועה אוכל לדעת מאיזה סיבה?
__________________

איציק ברבי - שירות לקוחות
כתובת אתר: http://build-net.co.il/
איימל: Support@build-net.co.il
טלפון: 052-3937296.
  Reply With Quote
ישן 09-12-12, 21:19   # 9
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

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

בהצלחה .
  Reply With Quote
ישן 09-12-12, 21:26   # 10
איציק ברבי
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 970

איציק ברבי לא מחובר  

ציטוט:
נכתב במקור על ידי xPerfection צפה בהודעה
עד כמה איטי זה?
ניסית להוריד ישירות מהשרת (ללא PHP) והגעת למהירויות גבוהות יותר?כן ניסיתי להוריד ישירות מהשרת והגעתי למהירות המקסימלית שלי.
ניסית להריץ את זה על שרת אחר והגעת למהירויות גבוהות יותר?אין בידי שרת אחר, כרגע אני מנסה על המחשב שלי ועל אחסון שקיבלתי מחר שיושב על שרת ייעודי.
ניסית לנטר את התעבורה בזמן אמת ולראות על איזה מהירות השרת מוריד את הקובץ?כיצד אני מבצע כזה דבר? עם wireshark?

^^ זה מוזר מכוון וניסיתי עם readfile() והגעתי לכמעט חצי מהירות הורדה מהקיימת שלי,

ועם הפונקציה שנתתי למעלה זה אפילו לא שישית..
השאלה היא האם אתה בטוח שהמהירות האיטית שאתה חווה בהכרח קשורה לקוד(?).

^^^
__________________

איציק ברבי - שירות לקוחות
כתובת אתר: http://build-net.co.il/
איימל: Support@build-net.co.il
טלפון: 052-3937296.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 23:10.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ