nginx uses high ram
John Feuerstein
john at feurix.com
Wed Jan 12 16:06:24 MSK 2011
As mentioned before, you have two options to handle application
controlled downloads:
*** 1 ***
Fix your PHP settings and code.
This is more painful than you might think(!), and many people get it wrong:
- disable PHP output buffering for the script (often enabled by
default), either via php.ini, htaccess, within the script, or
alternatively go ahead and explicitely flush buffers within the loop.
- make sure to disable PHP zlib output compression (similar effect)
- make sure to configure PHP max_execution_time and similar timeouts
- configure nginx settings for the download script location:
gzip*, fastcgi_buffer*, proxy_buffer* and various timeouts come to mind,
depending on how you communicate with PHP.
*** 2 ***
As suggested, stop useless piping of data through the PHP process and
make use of nginx's X-Accel-Redirect. Compare this to all of the stuff
above!
location /downloads/ {
internal;
alias /path/to/the/dir/containing/filename.file/;
}
<?php
header("Content-Type: application/force-download"); // or correct one
header("X-Accel-Redirect: /downloads/filename.file");
?>
Regards,
John
More information about the nginx
mailing list