緩存 Laravel 給多種緩存系統提供豐富而統一的 API,緩存配置信息位於 config/cache.php,在這個文件中你可以為你的應用程式指定預設的緩存驅動,Laravel 支持當前流行的緩存系統,如非常棒的 Memcached 和 Redis 。 Memcached 1、配置 使用 Mem ...
緩存
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 Illuminate\Support\Facades\Cache; use Carbon\Carbon;
先判斷是否能從緩存中取到數據,如果沒有緩衝,再從資料庫里獲取。最後把模型對象傳遞到前臺的視圖中。
時間日期處理包--Carbon
Carbon – 繼承自 PHP DateTime 類的 API 擴展,它使得處理日期和時間更加簡單。Laravel 中預設使用的時間處理類就是 Carbon。
由於 Laravel 項目已預設安裝了此包,所以不需要用 composer 安裝它了。
只需要添加命名空間引用就好了:use Carbon\Carbon;
獲取當前時間
可以同 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() { \Carbon\Carbon::setLocale('zh'); }
這樣就可以在前臺調用,然後顯示中文了。
比如在blade里顯示文章創建時間:
$article->updated_at->diffForHumans()
加入 -diffForHumans() 之前,顯示的是具體的時間,比如:2017-05-10 02:05:56 。用它之後,就變成 1周前 了。這樣感覺很人性化。
更多詳細用法,可以參考 Carbon 文檔。
文中的源代碼可以在我的GitHub上獲取到。歡迎交流。
Carbon部分參考:日期及時間處理包 Carbon 在 Laravel 中的簡單使用 - Specs' Blog-就愛PHP