まず第一に、私のウェブサイトは現在これらのコンポーネントを使用しています
"require": { "symfony/http-foundation": "^3.1", "symfony/routing": "^3.1", "symfony/http-kernel": "^3.1", "symfony/event-dispatcher": "^3.1", "pimple/pimple": "~3.0", "illuminate/database": "^5.3" },
laravelのイベントコンポーネントの代わりにsymfonyのイベントディスパッチャーコンポーネントを使用しているため
、これにはEloquent ORMサービスが初期化されるときに設定イベントが付属しています監視機能は動作しません
use Illuminate\Events\Dispatcher; use Illuminate\Container\Container; $capsule->setEventDispatcher(new Dispatcher(new Container));
と、重複した機能を持つ 2 つのコンポーネントを使用したくないので、Eloquent ORM イベントを監視してキャッシュすることができません。
私が達成したいのは、主に memcache を使用して Eloquent ORM クエリ イベントのデータをキャッシュすることです。この手順を実行する方法...
まず第一に、私の Web サイトは現在これらのコンポーネントを使用しています
"require": { "symfony/http-foundation": "^3.1", "symfony/routing": "^3.1", "symfony/http-kernel": "^3.1", "symfony/event-dispatcher": "^3.1", "pimple/pimple": "~3.0", "illuminate/database": "^5.3" },
私が使用している Symfony のイベントディスパッチャーコンポーネントは Laravel のイベントコンポーネントを使用していないため、Eloquent ORM サービスが初期化されると、組み込みのイベント監視機能が使用できなくなります。また、重複した機能を持つ 2 つのコンポーネントを使用したくありません。したがって、Eloquent ORM イベントをリッスンしてキャッシュする方法はありません。
私が実現したいのは、memcache を使用して Eloquent ORM クエリ イベントのデータをキャッシュすることです。この手順を実行する方法...
キャッシュには remember
メソッドを使用することをお勧めします。クエリデータ。
use Illuminate\Events\Dispatcher; use Illuminate\Container\Container; $capsule->setEventDispatcher(new Dispatcher(new Container));
remember
方法。
$value = Cache::remember('users', $minutes, function() { return DB::table('users')->get(); });
有缓存就直接返回缓存里的数据,否则从数据库查询并设置缓存后返回数据。
至于你说的替换了event dispatcher,怎么监听model事件,可以在model或者基类model里写, 例如:
protected static function boot() { parent::boot(); static::created(function ($model) { // cache model }); }
每个事件都有其对应的静态方法:saving
saved
updating
updated
creating
created
deleting
deleted
以上就是Eloquent ORM该怎么监听它的事件然后使用memcache缓存数据的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!
あなたが言及したイベントディスパッチャーの置き換えに関しては、モデルイベントを監視する方法は、モデルまたは基本クラスモデルに記述することができます。例:
Saving
保存 更新
更新
作成
作成
削除
削除
🎜🎜上記は、Eloquent ORM がイベントをリッスンし、memcache を使用してデータをキャッシュする方法です。関連コンテンツの詳細については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。
🎜