Sendfile is an IPS plugin that implements server X-Sendfile support into the software suite. Before purchasing, be sure to download and run the test script provided to ensure your server is properly configured for X-Sendfile support.
To run the test script, simply upload the "sendfile_test" folder to your websites root, and then navigate to "http://yoursite.com/sendfile_test" in your browser. You will be prompted to run a simple test to ensure X-Sendfile is functioning properly on your server.
What is X-Sendfile?
In short, it gives PHP a way to tell your web server to deliver files to the client after proper permission checks and other actions have been performed by IPS. This way, you are not relying on PHP itself to deliver the files to the client.
The reason you don't want PHP to handle file transfers is simple: PHP is really inefficient at it. This is particularly important if you run IPS in a self-hosted environment and your community makes heavy use of attachments or IP.Downloads file submissions.
When you have a lot of users trying to download files concurrently, PHP will rapidly consume your servers available memory pool and, assuming your server makes use PHP-FPM or fastCGI, it will lock up your available PHP processes that are used to serve pages to your other users. This means basic topics and other pages will not load until another users download has completed.
By utilizing X-Sendfile, you are able to pass the workload back off to the web-server. This is immensely more memory efficient, faster, and will keep your PHP processes free. This overall makes IPS significantly more scalable, especially in a self-hosted environment.
This project is licensed under the Mozilla Public License 2.0. Learn more
Did you find this useful? Want more free plugins and applications like this?
Show your support by buying me a Coffee, also known as programmer's fuel!
What's New in Version 1.2.0 See changelog
Updated for IPS 4.5.x compatibility and deprecates IPS 4.3 support
If you are using this with Nginx, you will need to reconfigure your internal redirects in your storage settings.