Php 拉威尔从记忆中消失了
我在Laravel上使用Glide,我有一个“小”问题。当我通过Php 拉威尔从记忆中消失了,php,laravel,image,php-glide,Php,Laravel,Image,Php Glide,我在Laravel上使用Glide,我有一个“小”问题。当我通过outputImage()加载小图像时,一切正常。但当我尝试加载(简单来说)1.6MB的图像时,Laravel放在控制台中: Allowed memory size of 67108864 bytes exhausted (tried to allocate 14152 bytes) in C:\Users\displate\Documents\displate\vendor\intervention\image\src\Inte
outputImage()
加载小图像时,一切正常。但当我尝试加载(简单来说)1.6MB的图像时,Laravel放在控制台中:
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;
}
get受保护函数($path、$storage、$size、$prefix=“”){
ini_集('memory_limit','64M');//它不工作:<
如果($this->check_变量($size)){
$server=$this->prepare\u server($storage,$prefix);
试一试{
$server->getImageResponse($path);
$server->outputImage($path,$\u GET);
}
捕获(\异常$e){
$this->download_image($path,$storage);
$server->getImageResponse($path);
$server->outputImage($path,$\u GET);
}
}
否则{
中止(404);
}
}
受保护的函数prepare\u server($storage\u name,$prefix=''){
$server=\League\Glide\ServerFactory::create([
'source'=>\Storage::disk($Storage\u name)->getDriver(),
'cache'=>\Storage::disk($Storage\u name)->getDriver(),
“源路径前缀”=>$prefix,
“缓存路径前缀”=>$storage\u name.“缓存”,
]);
$_GET['fit']='crop';
$_GET['crop']='center';
返回$server;
}
如果您确信您的内存确实是由于您认为的原因而耗尽的,而不是由于某个无限循环或其他错误,那么您可以通过执行以下操作来增加PHP能够使用的内存量
- 找到web服务器使用的php.ini文件
- 编辑php.ini文件中的memory_limit参数(通常在名为Resource Limits的部分中)
- 重新启动Apache
memory_limit 128M
如果你陷入困境,看起来是一个很好的资源
64Mb,这是你所拥有的,不是那么多。如果你有内存的话,我会把它设置在512M甚至1024M。内存限制帮帮我,我现在使用的是512Mb