Yêu cầu thg 4 23, 2018 8:26 SA 139 0 1
  • 139 0 1
0

Lỗi về event - listener.

Chia sẻ
  • 139 0 1

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

thg 4 23, 2018 9:19 SA

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?

1 CÂU TRẢ LỜI


Đã trả lời thg 4 24, 2018 9:40 SA
Đã được chấp nhận
+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.

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí