• Laravel建站05--缓存、时间日期处理包


    缓存

    Laravel 给多种缓存系统提供丰富而统一的 API,缓存配置信息位于 config/cache.php,在这个文件中你可以为你的应用程序指定默认的缓存驱动,Laravel 支持当前流行的缓存系统,如非常棒的 Memcached 和 Redis 。

    Memcached

    1、配置

    使用 Memcached 驱动需要安装 Memcached PECL 扩展包 。你可以把所有 Memcached 服务器都列在 config/cache.php 这个配置信息文件中。

    'memcached' => [
        'driver' => 'memcached',
        'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
        'sasl' => [
            env('MEMCACHED_USERNAME'),
            env('MEMCACHED_PASSWORD'),
        ],
        'options' => [
            // Memcached::OPT_CONNECT_TIMEOUT  => 2000,
        ],
        'servers' => [
            [
                'host' => env('MEMCACHED_HOST', '127.0.0.1'),
                'port' => env('MEMCACHED_PORT', 11211),
                'weight' => 100,
            ],
        ],
    ],

    我用本机的memcached测试,Laravel的cache配置采用了默认配置,PHP代码如上。

    2、测试缓存

    打开之前写好的ArticelController.php,修改显示文章详情的方法为:

    public function show($id)
    {
        $article = Cache::get('article_'.$id);
        if(!$article){
            $article = Article::find($id);
            Cache::put('article_'.$id, $article, Carbon::now()->addMinutes(30));
        }
        //return view('article')->withArticle(Article::find($id));
        return view('article', ['article' => $article]);
    }

    还要在在文件中添加缓存和时间日期处理包--Carbon的引用

    use IlluminateSupportFacadesCache;
    use CarbonCarbon;

    先判断是否能从缓存中取到数据,如果没有缓冲,再从数据库里获取。最后把模型对象传递到前台的视图中。


     

    时间日期处理包--Carbon

    Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。Laravel 中默认使用的时间处理类就是 Carbon。

    由于 Laravel 项目已默认安装了此包,所以不需要用 composer 安装它了。

    只需要添加命名空间引用就好了:use CarbonCarbon;

    获取当前时间

    可以同 now() 方法获取当前的日期和时间。如果你不指定参数,它会使用 PHP 配置中的时区:

    echo Carbon::now(); //2017-05-18 10:21:20

    如果你想使用一个不同的时区,你需要传递一个有效的时区作为参数:

    // 直接使用字符串
    echo Carbon::now('Europe/London'); //2016-10-14 20:21:20
    // 或者
    echo Carbon::now(new DateTimeZone('Europe/London'));

    时间格式本地化

    可以在 app/Providers/AppServiceProvider.php 的 boot() 方法中添加下面的代码来设置全局本地化:

    public function boot()
    {
        CarbonCarbon::setLocale('zh');
    }

    这样就可以在前台调用,然后显示中文了。

    比如在blade里显示文章创建时间:

    $article->updated_at->diffForHumans()

    加入 -diffForHumans() 之前,显示的是具体的时间,比如:2017-05-10 02:05:56 。用它之后,就变成 1周前 了。这样感觉很人性化。

    更多详细用法,可以参考 Carbon 文档

    文中的源代码可以在我的GitHub上获取到。欢迎交流。

    Carbon部分参考:日期及时间处理包 Carbon 在 Laravel 中的简单使用 - Specs' Blog-就爱PHP

  • 相关阅读:
    css样式预处理器
    cookie&localStorage&sessionStorage
    《程序员面试金典》---读书笔记
    《Linux多线程服务端编程--使用muduo C++ 网络库》---读书笔记
    慢慢走上正轨
    padding 和 margin 不为人知的一面 ---(深度整理)
    html+css代码需要注意的地方(整理)
    前言
    MikTex 和 TexStudio 输入中文日文
    .htaccess 二级域名绑定子目录
  • 原文地址:https://www.cnblogs.com/timeismoney/p/6872235.html
Copyright © 2020-2023  润新知