zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 5059 Help him
    HDU 5058 So easy
    HDU 5056 Boring count
    HDU 5055 Bob and math problem
    HDU 5054 Alice and Bob
    HDU 5019 Revenge of GCD
    HDU 5018 Revenge of Fibonacci
    HDU 1556 Color the ball
    CodeForces 702D Road to Post Office
    CodeForces 702C Cellular Network
  • 原文地址:https://www.cnblogs.com/timeismoney/p/6872235.html
Copyright © 2011-2022 走看看