Laravel滑出了记忆

时间:2015-07-13 12:38:10

标签: php laravel image php-glide

我在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;
}

1 个答案:

答案 0 :(得分:2)

如果您确定实际上因为您认为的原因而耗尽了内存,而不是来自某些无限循环或其他错误,则可以通过执行以下操作来增加PHP能够使用的内存量。

  • 找到您的网络服务器使用的php.ini文件
  • 编辑php.ini文件中的memory_limit参数(通常在名为Resource Limits的部分中)
  • 重启Apache。

之后看起来应该是这样的:

memory_limit 128M

如果你遇到困难,this看起来像是一个很好的资源

64Mb,这就是你所拥有的,不是那么多。如果你有撞锤,我会把它固定在512M甚至1024M。