| Autor | Zpráva | ||
|---|---|---|---|
| Tomkinss Profil |
#1 · Zasláno: 13. 10. 2012, 14:00:21
Potreboval by som poradiť s jedným php kódom, ktorý generuje obsah na stiahnutie.
Všetko funguje ako má, až nato, že 1 užívateľ spotrebuje asi 200 MB RAM servera. Neviem či to spôsobuje overovanie pripojenia, alebo rozdelovanie súboru cez while. Môžete sa nato niekto pozrieť a poradiť mi pravdepodobnú príčinu tak vysokej záťaže ? $size = $size * 1024;
/* Create the output file */
header("Content-type: ".$ext." File");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".$size);
header("Content-disposition: attachment; filename=\"".$name."\"");
// Set max speed for free user
$kb_s=(int)(1000000/$speed);
//Set PHP not to cancel execution if the connection is aborted
//and drop the time limit to allow for big file downloads
ignore_user_abort(true);
set_time_limit(0);
$fp=fopen($file, 'r');
$update_status = 1;
while(!feof($fp)) {
echo fread($fp, 1024);
//Make sure the data gets flushed properly or the connection check won't work
flush();
ob_flush();
//Check then connection status and exit loop if aborted
if(connection_status() != CONNECTION_NORMAL || connection_aborted()) {
$update_status = 2;
break;
}
if ($speed != 0) {
usleep($kb_s);
}
} // end while..
fclose($fp);
// Update finish download
mysql_query("
UPDATE
`downloads`
SET
`download_status` = '" . $update_status . "'
WHERE
`id` = '" . $last_down . "'
");
//Never hurts to ensure that the script halts execution
die();
Za každu radu vopred ďakujem. |
||
| Davex Profil |
#2 · Zasláno: 14. 10. 2012, 14:03:43
Uvedený kód by tolik paměti používat neměl a při testu mi spotřeboval kolem 600 KB paměti.
|
||
|
Časová prodleva: 14 let
|
|||
0