0
Lỗi về event - listener.
Xin chào mọi người, hiện tại em đang làm một dự án, có sử dụng event - listener của laravel 5.2. Code event của em k sử dụng Shouldqueue
hay broadcast
. Cụ thể event em như thế này:
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
class CreateItem extends Event
{
use SerializesModels;
public $date;
/**
* Create a new event instance.
*
* @param string $date Date
*
* @return void
*/
public function __construct($date)
{
$this->date = $date;
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return [];
}
}
và listener như thế này
<?php
namespace App\Listeners;
use App\Events\CreateItem as CreateItem;
class CreateItem
{
private $createItemSer;
/**
* Get date for create item constructor.
*/
public function __construct() {
$this->createItemSer = new CreateItemSer();
}
/**
* Handle the event.
*
* @param CreateItem $event Get date for timeline
*
* @return void
*/
public function handle(CreateItem $event)
{
$this->createItemSer->createItem($event->date);
}
}
Hiện tại em check code rất kĩ nhưng k thấy vấn đề, và em test ở các môi trường như local, dev thì k bị lỗi, nhưng trên prod của em thì bị duplicate item. Sự khác biệt lớn nhất giữa server Prod và dev của em là trên Prod em dùng 2 server cho cùng 1 host (kiểu giống như khi auto scalling của AWS). Ai biết cái này vì sao có lại lỗi không chỉ mình với. Xin cảm ơn ạ.
1 CÂU TRẢ LỜI
+1
Bạn kiểm tra xem https://laravel.com/docs/5.6/scheduling#running-tasks-on-one-server 5.2 chưa support nhưng bạn có thể gg tìm hiểu cách giải quyết nhé, mình nghĩ có thể do thằng này.
Nếu local chạy ổn mà product có vấn đề thì mình cũng nghĩ chắc do cấu trúc khác nhau như bạn nghi ngờ. Nhưng mình vẫn chưa hiểu ý bạn nói: "Prod em dùng 2 server cho cùng 1 host". Có phải ý bạn nói là Product của bạn đang chạy trên 2 server riêng biệt?