Heim >Backend-Entwicklung >PHP-Tutorial >Wie hört Eloquent ORM seine Ereignisse ab und verwendet dann Memcache, um die Daten zwischenzuspeichern?
Zuallererst verwendet meine Website derzeit diese Komponenten
"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" },
Weil ich die Event-Dispatcher-Komponente von Symfony anstelle der Event-Komponente von Laravel verwende
Also wann Der Eloquent ORM-Dienst ist initialisiert, die integrierte Ereignisüberwachungsfunktion kann nicht verwendet werden
use Illuminate\Events\Dispatcher; use Illuminate\Container\Container; $capsule->setEventDispatcher(new Dispatcher(new Container));
Und ich möchte nicht zwei Komponenten mit doppelten Funktionen verwenden, daher kann ich den Eloquent ORM nicht überwachen. Die Ereignisse sind dann zwischengespeichert.
Was ich erreichen möchte, ist hauptsächlich die Verwendung von Memcache zum Zwischenspeichern der Daten von Eloquent ORM-Abfrageereignissen ...
Zunächst einmal. Meine Website verwendet derzeit diese Komponenten
"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" },
Da ich die Event-Dispatcher-Komponente von Symfony anstelle der Event-Komponente von Laravel verwende,
wenn der Eloquent ORM-Dienst initialisiert wird, ist dies mit der Funktion zum Festlegen der Ereignisüberwachung ausgestattet .
use Illuminate\Events\Dispatcher; use Illuminate\Container\Container; $capsule->setEventDispatcher(new Dispatcher(new Container));
kann nicht verwendet werden und ich möchte nicht zwei Komponenten mit doppelten Funktionen verwenden, daher kann ich Eloquent ORM-Ereignisse nicht abhören und zwischenspeichern.
Was ich erreichen möchte, ist die Verwendung von Memcache zum Zwischenspeichern der Daten von Eloquent ORM-Abfrageereignissen ...
Es wird empfohlen, es zu verwenden remember
Methode.
$value = Cache::remember('users', $minutes, function() { return DB::table('users')->get(); });
Wenn ein Cache vorhanden ist, werden die Daten im Cache direkt zurückgegeben. Andernfalls werden die Daten nach Abfrage der Datenbank und Festlegen des Caches zurückgegeben.
Was das Ersetzen des von Ihnen erwähnten Ereignis-Dispatchers betrifft, kann die Überwachung von Modellereignissen im Modell oder Basisklassenmodell geschrieben werden, zum Beispiel:
protected static function boot() { parent::boot(); static::created(function ($model) { // cache model }); }
Jedes Ereignis hat seine entsprechende statische Methode : saving
saved
updating
updated
creating
created
deleting
deleted
以上就是Eloquent ORM该怎么监听它的事件然后使用memcache缓存数据的内容,更多相关内容请关注PHP中文网(www.php.cn)!