Heim > Backend-Entwicklung > PHP-Tutorial > Wie hört Eloquent ORM seine Ereignisse ab und verwendet dann Memcache, um die Daten zwischenzuspeichern?

Wie hört Eloquent ORM seine Ereignisse ab und verwendet dann Memcache, um die Daten zwischenzuspeichern?

PHP中文网
Freigeben: 2016-09-03 00:14:12
Original
1297 Leute haben es durchsucht


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"
    },
Nach dem Login kopieren
Nach dem Login kopieren

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));
Nach dem Login kopieren
Nach dem Login kopieren

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 ...

Antwortinhalt:

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"
    },
Nach dem Login kopieren
Nach dem Login kopieren

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));
Nach dem Login kopieren
Nach dem Login kopieren

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();
});
Nach dem Login kopieren

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
    });
}
Nach dem Login kopieren

Jedes Ereignis hat seine entsprechende statische Methode : saving saved updating updated creating created deleting deleted

以上就是Eloquent ORM该怎么监听它的事件然后使用memcache缓存数据的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage