Sends PHP packaged archives in smaller segments (16MB) to not hit PHP's memory limit. Thanks to Zaoh Lei.

This commit is contained in:
Lars Jung 2013-07-16 21:38:07 +02:00
parent a87500309a
commit b09d4f638c
2 changed files with 12 additions and 15 deletions

View file

@ -105,7 +105,7 @@ Options
*/
"download": {
"enabled": true,
"execution": "shell",
"execution": "php",
"format": "tar",
"packageName": null
},

View file

@ -136,21 +136,18 @@ class Api {
header("Connection: close");
register_shutdown_function("delete_tempfile", $target);
readfile($target);
// readfile($target);
// Patch by Zhao Lei
// Max size of download file is limited by memory_limit(default: 128M)
// in php.ini if we use readfile().
// To solve this problem, we can change to send data with small segments.
// if ($fd = fopen($target, 'rb')) {
// set_time_limit(0);
// while (!feof($fd)) {
// print fread($fd, 1024 * 64);
// ob_flush();
// flush();
// }
// fclose($fd);
// }
// Send data in small segments of 16MB to not hit PHP's memory limit (default: 128M)
if ($fd = fopen($target, 'rb')) {
set_time_limit(0);
while (!feof($fd)) {
print fread($fd, 1024 * 1024 * 16);
ob_flush();
flush();
}
fclose($fd);
}
}