Грешка в код за конвертиране

kriss

Registered
Ето грешката:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 16515072 bytes) in /var/www/clients/client9/web18/web/get_vb_mp3.php on line 11
а това е кода:
<?php
function convert($url)
{
$e = @end(explode(':',$url));
if (strlen($e) != 8 )
return false;
$f = @file_get_contents('http://vbox7.com/etc/ext.do?key='. $e .'&antiCacheStamp='.time());
$e2 = @next(explode('&flv_addr=',$f));
$flv = @current(explode('&',$e2));
if (file_put_contents($e.'.flv',file_get_contents('http://'.$flv)))
{
exec('ffmpeg -i '. dirname(__FILE__).'/'.$e .'.flv '. dirname(__FILE__).'/'.$e .'.mp3');
unlink($e.'.flv');
return $e .'.mp3';
}
return false;

}
$urli = $_GET['url'];
$e = convert($urli);

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
header('Content-type: audio/mpeg');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($e));
header('Content-Disposition: attachment; filename='.$e);

echo file_get_contents($e);
?>
ред 11 е:
if (file_put_contents($e.'.flv',file_get_contents('http://'.$flv)))
 
Ми то си пише :). Отваряш файл по-голям от допустимия.

Отвори php.ini и търси реда:

memory_limit = 32M ; Maximum amount of memory a script may consume (16MB)

Задай го на повече и рестарт на сървъра.
 
kriss каза:
това е на платен хост :?

Е и направи си един файл с разширение .ini (ползвай си обикновен текстов редактор) и увеличи размера на лимита за използване на памет.

Ето малко повеч инфо - http://help.superhosting.bg/faq/11_166_bg.html?highlight=Allowed%20memory
 
ако си на хост сигорен ли си че там има ffmpeg защото иначе няма да стане

пп. когато писах кода не съм имал в предвид подобни ограничения може да ползваш fread за да четеш примерно по 5MB на веднъж и и пак ще работи без да променяш memory_limit
 

Back
Горе