我正在使用以下脚本
<?php
set_time_limit(0);
if(isset($_GET['videoURL']) && $_GET['videoURL']!=''){
$URL=$_GET['videoURL'];
$URL=base64_decode($URL);
//clear all previous buffers start a new one
ob_end_clean( ); ob_start( );
// open file
$handle = @fopen($URL, 'rb');
// Forward headers, $http_response_header is populated by fopen call
foreach ($http_response_header AS $header) {
header($header);
}
//send header information
ob_clean(); flush();
$chunksize = 8*1024;
$buffer = '';
while (!feof($handle) ) {
$buffer= @fread($handle,$chunksize);
print $buffer;
ob_flush();
flush();
}
fclose($handle);
exit;
}
?>
将视频流式传输给用户。 apache2进程正常运行,直到一个进程突然开始填充RAM并导致服务器崩溃。
我不确定,但我相信它的内存泄漏问题。如果我使用PID终止进程,那么一切都会变得平滑,否则服务器就会停止。
请在这方面帮助我。
Apache配置:
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 20
MaxClients 256
MaxRequestsPerChild 10
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 5
MaxSpareThreads 25
ThreadLimit 10
ThreadsPerChild 10
MaxClients 112
MaxRequestsPerChild 5
</IfModule>