2016-09-22 4 views
0

laravel 5.2.0 및 https://github.com/jenssegers/laravel-mongodb을 설치했으며 대기열을 통해 이메일을 보내려고합니다. 나는 성공적으로 작업 테이블을 만들었지 만 PHP 장인 큐를 실행할 때 한 : 그것은 다음과 같은 오류 던지고있다 명령 일 - enter image description herephp artisan queue : mongodb 및 laravel과 작동하지 않음 5.2

- 나는 데이터베이스 연결을 확인했습니다

PHP Fatal error: Call to a member function beginTransaction() on null in /var/www/html/admin/setupl/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 576

을 여기에 명령 줄에서 내 전체 로그입니다

나는 그것을 해결하기 위해 많은 시간을 보냈지 만 여전히 작동하지는 않습니다. 모든 도움은 정말로 감사 할 것입니다.

편집 - 제안으로 "MongoDB가 트랜잭션을 가지고 있지 않기 때문에 Laravel 하나를 시작하려고 할 때 예외가 throwed는"여기 https://github.com/jenssegers/laravel-mongodb/pull/871, 내가 들어 BeginTransaction에서 코드를 주석하고 (커밋)와 널 (null), 현재 오류가왔다 반환 그래도 명령이 작동하지 않습니다.

public function commit() 
{ 
    return null; 
} 

그리고

public function beginTransaction() 
{ 
    return null; 
} 

답변

0

그냥 Laravel에 대한 캐시로 Redis를 사용하는 경우 그것은 좋습니다. 대기열에 훨씬 적합하며 기본 지원이 있습니다. 나는 작업자 대기열과 Mongo를 db로 사용한다.

+0

예, 지금 Redis를 사용하고 있습니다. 답장을 보내 주셔서 감사합니다. @ Pian0_M4n –

0

우리는 Laravel 5.1에서 동일한 문제에 봉착했으며 laravel-mongodb 대기열 구현을 적절한 _id Mongo 식별자로 패치 했음에도 불구하고 쿼리 빌더 구문이 데이터베이스 수준에서 적절한 원 자성을 허용하십시오. 우리는 문서 수준의 잠금을 구현하는 자체 대기열 드라이버를 작성했습니다. 우리가 각 작업을 보장 할 수있는 방법은 여러 작업자가있는 경우에만 한 번 실행됩니다.

현재 버전 5.1 Laravel을 위해 일 우리의 큐 드라이버의 버전을 확인할 수 있습니다 https://github.com/chefsplate/laravel-mongodb-queue

우리가 대기열로 레디 스를 사용하는 한 주요 관심사입니다 당신이 디스크에 안정적으로 플러시하지 않는 한 모든 작업 이후 메모리에 저장되어있는 경우 REDIS가 다운되는 경우 작업을 잃을 가능성이 있습니다. 그리고 디스크에 REDIS를 자주 작성하는 경우 (자체적으로 우려 사항이 있음) MongoDB와 같은 영구 저장소를 사용하는 것이 좋습니다.