prolic / humus-stream-response-sender
ZF2 module that can send stream responses with http range header, xsendfile & pecl_http support
v0.3.0
2018-11-22 16:08 UTC
Requires
- php: ^5.6|^7.0
- zendframework/zend-http: ^2.2.1|^3.0
- zendframework/zend-modulemanager: ^2.2.1|^3.|^3.0
- zendframework/zend-mvc: ^2.2.1|^3.0
- zendframework/zend-servicemanager: ^2.2.1|^3.0
Requires (Dev)
- phpmd/phpmd: 1.5.*
- phpunit/phpunit: ^5.7|^6.0
- satooshi/php-coveralls: ~0.6
- squizlabs/php_codesniffer: 1.4.*
- zendframework/zendframework: ^2.2.1|^3.0
This package is auto-updated.
Last update: 2024-10-27 01:32:16 UTC
README
Introduction
HumusStreamResponseSender is a Zend Framework 2 module that sends stream responses with HTTP Range header, XSendFile & pecl_http support.
Requirements
- Zend Mvc 2.2.1 (latest master)
- Zend Http 2.2.1 (latest master)
- Zend ModuleManager 2.2.1 (latest master)
Features / Goals
- Send stream responses with Zend Framwork 2 [COMPLETE]
- Limit download speed [COMPLETE]
- Allow for range support (download resume) [COMPLETE]
- Send streams with pecl_http extension [INCOMPLETE]
- Send streams with X-SendFile [INCOMPLETE]
- Send streams with X-Accel-Redirect [INCOMPLETE]
- Add controller plugin for easy streaming from controllers [COMPLETE]
Installation
- Add
"prolic/humus-stream-response-sender": "dev-master"
to yourcomposer.json
- Run
php composer.phar install
- Enable the module in your
config/application.config.php
by addingHumusStreamResponseSender
tomodules
Configuration
Sample configuration:
<?php
return array(
'HumusStreamResponseSender' => array(
'enable_speed_limit' => true,
'enable_range_support' => true,
'chunk_size' => 1024 * 1024 // = 1MB/s
),
);
Usage of controller plugin
The simplest way to stream a response from a controller, is the stream plugin.
class IndexController extends AbstractActionController
{
public function fileAction()
{
return $this->plugin('stream')->binaryFile('/path/to/my/file');
}
}
Additional notes
If the speed limit switch is set to true, the used chunksize will also be the download speed in bytes per second
The default configuration is:
- enable_speed_limit = false
- enable_range_support = false
- chunk_size = 262144