ホームページ  >  記事  >  php教程  >  SmartWiki 開発日記 Laravel キャッシュ拡張機能

SmartWiki 開発日記 Laravel キャッシュ拡張機能

WBOY
WBOYオリジナル
2016-12-05 13:26:251606ブラウズ

SmartWiki の概要については、以下をお読みください: http://www.cnblogs.com/lifeil/p/6113323.html

SmartWiki デモ サイトは Alibaba Cloud 上にデプロイされているため、Alibaba Cloud には 128M の無料 Memcache サービスがあります。Memcached の設定方法に従って設定した後、Laravel がエラーを報告していることがわかりました。エラーの場所は addServer エラーです。 Alibaba Cloud に接続できません。

仕方ないのでAlibaba Cloudのインストールマニュアルに従ってスクリプトを書いてサーバーに置いた結果、接続して書き込むことができました。

Alibaba Cloud が提供するスクリプトは次のとおりです:

リーリー

laravel の Memcached ドライバーを見ると、/vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php に Memcached オブジェクトを作成するコードは次のとおりです。

リーリー
Laravel の Memcached には setOption メソッドを設定するオプションがないことがわかります。これには、最も単純な接続の確立のみが含まれており、その後、getVersion を呼び出して接続されているかどうかをテストします。 Alibaba Cloud のデモ コードでは、圧縮をオフにし、バイナリ バイナリ プロトコルを使用するオプションを設定します。

カスタムオプションを実装するにはMemcachedの機能を自分で拡張するしかありません。 laravelの拡張キャッシュは、Cache::extendを使用して拡張できます。拡張コードは次のとおりです:

リーリー
リーリー

バージョン 5.2 以降では設定の読み取りが適用されない、laravel キャッシュ拡張機能に関する記事がインターネット上に出回っています。

キャッシュ拡張コードでは、サービスプロバイダーを登録するために ServiceProvider を作成する必要があります。サービスプロバイダーは、Laravel アプリケーションの起動の中心です。独自のアプリケーションとすべての Laravel のコアサービスは、サービスプロバイダーを通じて開始されます。

しかし、「イニシエーション」とは何を意味するのでしょうか?通常、これは、サービス コンテナー バインディング、イベント リスナー、ミドルウェア、さらにはルートの登録を含む、登録を意味します。サービス プロバイダーはアプリケーション構成の中心です。

Laravel に付属の config/app.php ファイルを開くと、アプリケーションによってロードされるすべてのサービスプロバイダークラスが表示されます。これは、それらの多くが遅延ロードされることを意味します。リクエストは毎回ロードされるわけではなく、実際に使用されるときにのみロードされます。

すべてのサービスプロバイダーは IlluminateSupportServiceProvider クラスを継承します。ほとんどのサービス プロバイダーには、 register と boot という 2 つのメソッドが含まれています。 register メソッドでは、イベント リスナー、ルート、またはその他の機能をサービス コンテナーにバインドすることだけを行う必要があります。

Artisan コマンド make:provider: を使用して新しいプロバイダーを簡単に生成できます

リーリー
すべてのサービスプロバイダーは、構成ファイル config/app.php を通じて登録されます。このファイルには、すべてのサービスプロバイダーの名前をリストするプロバイダー配列が含まれています。デフォルトでは、これらのすべてのコアサービスプロバイダーが Laravel コアコンポーネントを開始します。メール、キュー、キャッシュなど。

独自のサービスプロバイダーを登録するには、それをこの配列に追加するだけです:

リーリー
config/cache.php で Memcached の設定も行います:

リーリー

拡張キャッシュにセッションを保存する必要がある場合は、Session::extend を呼び出してセッション ストレージを拡張する必要もあります。

リーリー

その後、.env で拡張キャッシュを構成できます。完全なコードは次のとおりです:

リーリー
スマートウィキコード
SmartWiki公式ウェブサイト: https://www.iminho.me

SmartWiki ソース コード: https://github.com/lifei6671/SmartWiki

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。