הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   באג ב PHP בהורדת קובץ מהשרת (https://hosts.co.il/forums/showthread.php?t=74663)

Noam 18-05-09 21:51

באג ב PHP בהורדת קובץ מהשרת
 
שלום,

מצאתי באג בגירסאות PHP 5 + שאף אחד לא עלה עליו בגלל שלא מצאתי תשובה איך לסדר את הבעיה.
בהורדת קובץ מהשרת, השרת לא מצליח להגיע לגודל הקובץ...

תמונה:
http://www.zix.co.il/images/266971956.jpg


שימו לב שאין הערכת זמן ידועה וגם לא מד הורדה - בגלל שהשרת לא יודע את כמות הקובץ.
בדקתי בכמה אתרי הורדות שיש להם גירסת PHP 5 ואין הערכת זמן.

איך פותרים את הבעיה?

תודה

mlnn 18-05-09 21:54

מוסיפים האדר של גודל הקובץ?

Noam 18-05-09 21:56

ציטוט:

נכתב במקור על ידי mlnn (פרסם 715847)
מוסיפים האדר של גודל הקובץ?

ניסיתי כמעט את כל סוגי ה HEADERS.
אתה מוזמן לבדוק :)

yakar 18-05-09 21:58

גם לי יש את הבעיה
הוספת השורה הבאה לא עזרה :
PHP קוד:

header('Content-Length: filesize("/3e/56")'); 


mlnn 18-05-09 22:05

אצלי פועל
PHP קוד:

header('Content-Length: '.filesize($file)); 


Shay Ben Moshe 18-05-09 22:06

שלח HEADER כזה

PHP קוד:

$file "coolimg.jpg";
header("Content-Length: ".filesize($file)); 

בדקתי וזה עובד...
כמובן בנוסף לכל ההאדרים שכבר יש.

עריכה: מה שכתבתי בהודעה הבאה בטעות:
ציטוט:

נכתב במקור על ידי yakar (פרסם 715851)
גם לי יש את הבעיה
הוספת השורה הבאה לא עזרה :
PHP קוד:

header('Content-Length: filesize("/3e/56")'); 


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

Shay Ben Moshe 18-05-09 22:07

~מחקתי~

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

Noam 18-05-09 22:17

תודה על העזרה אבל אצלי עדיין לא עובד.

ציטוט:

header("Content-Length: ".filesize($file));
אם עובד לכם, אפשרי לראות ?
בגלל שלא הגיוני שאצלי זה לא עובד ובדקתי בעוד אתרים... PHP 5.2 כמו אצלי

אדיר 18-05-09 22:42

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

Noam 18-05-09 23:15

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 715877)
קצת נסחפת עם עצמך.. זה אפילו לא קשור ל- PHP.
את הפיתרון כבר אמרו לך.

זה קשור
בדקתי אותו הדבר ב גירסה 4 ובגירסה 5
לא עובד מי שאומר שעובד שיוכיח.

Jerba 19-05-09 00:09

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

yakar 19-05-09 07:15

לא עובד מה שהביאו פה.

וכמו שאמרו לפני בphp 4.2 אותו קוד בדיוק עובד..

האם יש סדר מיוחד שצריך לשים ב5?

yakar 19-05-09 16:46

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

הסקריפט הוא :
PHP קוד:

<?php 
$local_file 
"sol-nv-b99-x86-dvd-iso-a.zip"
$download_file "test.bin"
$download_rate "10"

    
// fix for IE catching or PHP bug issue 
    
header("Pragma: public"); 
    
header("Expires: 0"); // set expiration time 
    
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    
// force download dialog 
    
header("Content-Type: application/force-download"); 
    
header("Content-Type: application/octet-stream"); 
    
header("Content-Type: application/download"); 
    
// use the Content-Disposition header to supply a recommended filename and 
    // force the browser to display the save dialog. 
    
header("Content-Disposition: attachment; filename=".basename($download_file).";"); 
    
header("Content-Transfer-Encoding: binary"); 
    
header("Content-Length: ".filesize($local_file)); 


    
// open file stream 
    
$file fopen($local_file"r"); 
    while(!
feof($file)) { 
        
// send the current file part to the browser 
        
print fread($fileround($download_rate 1024)); 

        
// flush the content to the browser 
        
flush(); 

        
// sleep one second 
        
sleep(1); 
    } 
?>



יתכן שיש בעיה בphp 5 ?

Jerba 19-05-09 18:49

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

yakar 20-05-09 08:04

גם בphp 4 יש את הבעיה..
מישהו יודע אולי יש איזה הגדרה שפוגעת? כי ממש השתמשתי בסקריפט שנתנו פה בעבר ועבד..

yard2010 20-05-09 08:08

זה לא באג ב-PHP... זה יכול להיות שילוב של הגדרות שרת \ בגדרות PHP לקויות. נסה על שרת אחר ותראה שזה עובד יופי...
: \

yakar 20-05-09 08:41

מישהו הצליח להריץ קוד כזה על Apache 2.2.11 ?
ראיתי שהם שינו משהו בנושא הזה

intercooler3819 20-05-09 10:37

תשלח CONTENT LENGTH בHEADERS
לא אמורה להיות שום בעיה
למרות שממה שאני זוכר יש קצת בעיות עם IE והדברים האלה

חוץ מזה - למה זה מפריע לך?

ציטוט:

נכתב במקור על ידי The Chosen Generl (פרסם 715855)
~מחקתי~

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

ובנוגע לזה - כשעובדים עם PREG_* (אני לא יודע איך זה עובד בPOSIX אבל בPCRE'S זה ככה) אפשר לבצע:
PHP קוד:

<?php
preg_replace
("/(<\/?)(\w+)([^>]*>)/e"
             
"'\\1'.strtoupper('\\2').'\\3'"
             
$html_body);


yakar 20-05-09 15:03

אני שם CONTENT LENGTH בHEADERS הוא לא מציג לי את גודל הקובץ.

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

יש למישהו פיתרון ?

בניה 20-05-09 17:40

ציטוט:

נכתב במקור על ידי yakar (פרסם 716104)
אני שם CONTENT LENGTH בHEADERS הוא לא מציג לי את גודל הקובץ.

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

יש למישהו פיתרון ?

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

Noam 20-05-09 18:28

יש מצב שזה בגלל גירסת האפצי על השרת.

אני אשנה את הגירסה ואבדוק אם הבעיה ממשיכה.

Jonathan Zeierman 20-05-09 18:32

ניסתי את הקוד על השרת שלי:
http://www.ventrilo.co.il/yoni/test.php
פרטי השרת:
PHP Version 5.2.9
Apache Version Apache/2
גם אצלי זה נותן זמן לא ידוע.

yakar 20-05-09 19:13

אכן , אותה בעיה מופיעה אצלי.

האם זה בגלל האפצי? שינוי גירסת הphp מ5 ל4 לא עזר..


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

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