Eloquent ORM은 어떻게 이벤트를 수신한 다음 Memcache를 사용하여 데이터를 캐시합니까?

PHP中文网
풀어 주다: 2016-09-03 00:14:12
원래의
1268명이 탐색했습니다.


우선 현재 내 웹사이트에서는 이러한 구성 요소를 사용하고 있습니다.

"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));
로그인 후 복사
로그인 후 복사

그리고 두 컴포넌트를 중복된 기능으로 사용하고 싶지 않아 Eloquent ORM을 모니터링할 수 없습니다. 이벤트는 다음과 같습니다. 그런 다음 캐시됩니다.
내가 달성하고 싶은 것은 주로 Memcache를 사용하여 Eloquent ORM 쿼리 이벤트의 데이터를 캐시하는 것입니다. 이 단계를 수행하는 방법...

답변 내용:

우선, 내 웹 사이트는 현재 이러한 구성 요소를 사용하고 있습니다.

"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));
로그인 후 복사
로그인 후 복사

을 사용할 수 없고 중복 기능이 있는 두 구성 요소를 사용하고 싶지 않아서 Eloquent ORM 이벤트를 수신하고 캐시할 수 없습니다.
내가 달성하고 싶은 것은 Memcache를 사용하여 Eloquent ORM 쿼리 이벤트의 데이터를 캐시하는 것입니다. 이 단계를 수행하는 방법...


사용하는 것이 좋습니다. remember 방법.

$value = Cache::remember('users', $minutes, function() {
    return DB::table('users')->get();
});
로그인 후 복사

캐시가 있는 경우 캐시에 있는 데이터를 직접 반환합니다. 그렇지 않은 경우에는 데이터베이스를 쿼리하고 캐시를 설정한 후 데이터를 반환합니다.

당신이 언급한 이벤트 디스패처를 교체하는 것과 관련하여 모델 이벤트를 모니터링하는 방법은 모델 또는 기본 클래스 모델에 작성할 수 있습니다. 예를 들면 다음과 같습니다.

protected static function boot()
{
    parent::boot();
    
    static::created(function ($model) {
        // cache model
    });
}
로그인 후 복사

각 이벤트에는 해당하는 정적 메서드가 있습니다. : saving saved updating updated creating created deleting deleted

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿