我在Laravel上使用Glide并且我遇到了“小”问题。当我按outputImage()
加载小图片时,一切都还可以。但是当我尝试加载时 - 简单来说 - Laravel的1.6MB图像放入控制台:
Allowed memory size of 67108864 bytes exhausted (tried to allocate 14152 bytes) in C:\Users\displate\Documents\displate\vendor\intervention\image\src\Intervention\Image\Gd\Decoder.php on line 34
我该如何简单地解决它?
我的代码的不好部分:
protected function get($path,$storage,$sizes,$prefix=''){
ini_set('memory_limit', '64M'); // it's not working :<
if($this->check_variables($sizes)){
$server=$this->prepare_server($storage,$prefix);
try{
$server->getImageResponse($path);
$server->outputImage($path, $_GET);
}
catch(\Exception $e){
$this->download_image($path,$storage);
$server->getImageResponse($path);
$server->outputImage($path, $_GET);
}
}
else{
abort(404);
}
}
protected function prepare_server($storage_name,$prefix=''){
$server = \League\Glide\ServerFactory::create([
'source' => \Storage::disk($storage_name)->getDriver(),
'cache' => \Storage::disk($storage_name)->getDriver(),
'source_path_prefix' => $prefix,
'cache_path_prefix' => $storage_name.'_cached',
]);
$_GET['fit']='crop';
$_GET['crop']='center';
return $server;
}
答案 0 :(得分:2)
如果您确定实际上因为您认为的原因而耗尽了内存,而不是来自某些无限循环或其他错误,则可以通过执行以下操作来增加PHP能够使用的内存量。
之后看起来应该是这样的:
memory_limit 128M
如果你遇到困难,this看起来像是一个很好的资源
64Mb,这就是你所拥有的,不是那么多。如果你有撞锤,我会把它固定在512M甚至1024M。