This repository was archived by the owner on Jan 29, 2020. It is now read-only.
Description Huge memory usage, despite using SapiStreamEmitter
When using Zend\Diactoros\Server with ->setEmitter(new \Zend\Diactoros\Response\SapiStreamEmitter());, it is still huge memory usage.
here is reproduce code.
<?php
use Zend \Diactoros \Server ;
// zendframework/zend-diactoros version is 1.3.10
require_once __DIR__ .'/vendor/autoload.php ' ;
$ server = Server::createServer (function () {
// create empty 10MB file
// $ dd if=/dev/zero of=tempfile bs=1M count=10
return new \Zend \Diactoros \Response (fopen ('tempfile ' , 'r ' ));
}, $ _SERVER , $ _GET , $ _POST , $ _COOKIE , $ _FILES );
$ server ->setEmitter (new \Zend \Diactoros \Response \SapiStreamEmitter ());
$ server ->listen ();
// for builtin server
file_put_contents ("php://stdout " , "\nMemory Usage: " . formatBytes (memory_get_peak_usage (true )));
function formatBytes ($ bytes , $ precision = 2 ) {
if ( abs ($ bytes ) < 1024 ) $ precision = 0 ;
$ sign = '' ;
if ( $ bytes < 0 ) {
$ sign = '- ' ;
$ bytes = abs ($ bytes );
}
$ exp = floor (log ($ bytes ) / log (1024 ));
$ bytes = sprintf ('%. ' .$ precision .'f ' , ($ bytes / pow (1024 , floor ($ exp ))));
return $ sign . $ bytes .' ' . ['B ' , 'KB ' , 'MB ' , 'GB ' , 'TB ' , 'PB ' , 'EB ' , 'ZB ' , 'YB ' ][$ exp ];
}
expected Memory Usage is 2.00 MB,
but showned Memory Usage is 16.00 MB.
I think that reason is Server::listen() calls ob_start ,
but did not clean output buffer (ob_end_clean)
Reactions are currently unavailable
Huge memory usage, despite using SapiStreamEmitter
When using Zend\Diactoros\Server with
->setEmitter(new \Zend\Diactoros\Response\SapiStreamEmitter());, it is still huge memory usage.here is reproduce code.
expected Memory Usage is
2.00 MB,but showned Memory Usage is
16.00 MB.I think that reason is Server::listen() calls
ob_start,but did not clean output buffer (ob_end_clean)