Php thời gian thực

Hiện ứng dụng web này đã được phát triển khác xa so với ngày đầu tiên nó xuất hiện, kèm theo đó là vô số kỹ thuật mới được áp dụng để phục vụ cho quá trình này.

đánh thức khái niệm thời gian thực mà bạn định nghĩa cho ứng dụng thôi

  • If need realtime realtime. chắc chắn phải sử dụng websocket, SSE, Kéo dài hoặc Sao chổi rồi. Tuy nhiên, sẽ rất nhiều kết nối và nếu dữ liệu thay đổi liên tục, có thể tính toán phía máy chủ sẽ rất quan trọng. Ví dụ bạn cần tính tổng đơn hàng đã được bán, cứ 0. 5s back has a new rows, the total task 0. 5s như vậy rất quý về tài nguyên
  • Còn việc gửi ajax định kỳ cũng có thể cho cảm giác thời gian thực, vì ngay cả thời gian thực thực cũng sẽ bị trễ về mạng,… Facebook sử dụng gửi ajax định kỳ

Ngoài ra, nếu muốn sử dụng realtime realtime với PHP, bạn có thể sử dụng ZeroMQ, ReactPHP, … Tuy PHP không hỗ trợ gốc như NodeJS nhưng hoàn toàn có thể sử dụng event-loop tự viết hoặc thư viện được.

Ngoài hỗ trợ gửi email, Laravel còn hỗ trợ gửi thông báo trên nhiều kênh khác nhau, bao gồm mail, SMS và Slack. Thông báo cũng có thể được lưu trữ trong cơ sở dữ liệu để chúng có thể được hiển thị trong trang web giao diện của bạn

Bài này mình sẽ hướng dẫn bạn sử dụng cơ sở dữ liệu để lưu và hiển thị thông báo khi người dùng thực hiện 1 thao tác nào đó

Đầu tiên bạn tạo 1 dự án laravel

composer create-project --prefer-dist laravel/laravel NotificationRealTime

Create 1 database then connect to your project

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_notification
DB_USERNAME=root
DB_PASSWORD=

Tạo bảng thông báo để lưu thông báo

php artisan notifications:table

php artisan migrate

Tiếp theo, bạn sử dụng cấu hình thủ công để tạo một tệp TestNotification

php artisan make:notification TestNotification

file vừa được tạo nằm trong thư mục

public function via($notifiable)
{
    return ['database'];
}
0

Tại chức năng thông qua các bạn hãy sử dụng return database để dữ liệu được lưu lại trong db

public function via($notifiable)
{
    return ['database'];
}

Sử dụng chức năng toArray để trả về một sự kiện lưu dữ liệu vào bảng thông báo

 public function toArray($notifiable)
    {
        return [
                'invoice_id' => $this->invoice->id,
                'amount' => $this->invoice->amount,
        ];
    }

Chúng ta chia sẻ lại tập tin đó như sau

data = $data;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['database'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->line('The introduction to the notification.')
                    ->action('Notification Action', url('/'))
                    ->line('Thank you for using our application!');
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return $this->data;
    }
}

Tiếp theo chúng ta chia sẻ màn hình đăng ký đăng ký để tạo người dùng chia sẻ nhận được thông báo

run up

public function via($notifiable)
{
    return ['database'];
}
1 and into the address
public function via($notifiable)
{
    return ['database'];
}
2 to register 1 user

Tạo giao diện giả mạo thông báo

Truy cập chế độ xem thư mục trong thư mục tài nguyên để tạo tệp

public function via($notifiable)
{
    return ['database'];
}
3

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_notification
DB_USERNAME=root
DB_PASSWORD=
1

Tạo bộ điều khiển để gửi thông báo

Tạo bộ điều khiển bằng câu lệnh

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_notification
DB_USERNAME=root
DB_PASSWORD=
2

And edit code back as after

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_notification
DB_USERNAME=root
DB_PASSWORD=
3

Thêm tuyến đường trong tệp

public function via($notifiable)
{
    return ['database'];
}
4

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_notification
DB_USERNAME=root
DB_PASSWORD=
0

Truy cập vào địa chỉ

public function via($notifiable)
{
    return ['database'];
}
5 ta chia sẻ thấy 1 biểu mẫu để giả mạo thông báo.

sau khi gửi thì khi vào bảng thông báo bạn chia sẻ thấy thông báo đã được lưu lại

Php thời gian thực

Hiển thị thông báo

Truy cập tệp

public function via($notifiable)
{
    return ['database'];
}
6 và thêm đoạn mã sau vào đoạn mã hiển thị thông tin người dùng để hiển thị thông báo

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_notification
DB_USERNAME=root
DB_PASSWORD=
1

Php thời gian thực

Trong bảng thông báo có 1 trường read_at để hiển thị thời gian bạn đã đọc thông báo. Chúng ta có thể sử dụng hàm

public function via($notifiable)
{
    return ['database'];
}
7 để đánh dấu đã đọc

Sử dụng trình đẩy để thông báo thời gian thực

Pusher là một dịch vụ cung cấp cho người dùng một dịch vụ ảo làm trung gian xử lý dữ liệu trong thời gian thực. Để sử dụng được pusher, chúng ta sẽ sử dụng package pusher/pusher-php-server, run command after to install