Vòng lặp sự kiện OpenSwoole (The OpenSwoole Event Loop)
Hầu hết các modules được cung cấp bởi OpenSwoole như Máy chủ đã xử lý việc thiết lập và vận hành một vòng lặp sự kiện cho bạn, vì vậy bạn không phải lo lắng về việc tự quản lý một vòng lặp sự kiện, nhưng OpenSwoole cũng cung cấp cho bạn một API vòng lặp sự kiện trực tiếp. bạn có thể xây dựng các vòng lặp sự kiện của riêng mình.
Làm thế nào để nó hoạt động (How does it work)
modules Vòng lặp sự kiện là một API cấp thấp dựa trên epoll_wait, là một chức năng của Linux cho phép bạn đợi và truy cập các sự kiện trình mô tả tệp (fd) khi chúng sẵn sàng, do đó, OpenSwoole cung cấp cho bạn một vòng lặp sự kiện dựa trên tệp. Đọc và ghi vào tệp, giao tiếp giữa các quá trình, giao tiếp mạng và điều khiển thiết bị đều dựa vào I / O tệp để hoạt động và có thể được xác định thông qua bộ mô tả tệp (‘fd’s). Điều này có nghĩa là API vòng lặp sự kiện có thể sử dụng epoll_wait để thăm dò ý kiến và đợi bộ mô tả tệp kích hoạt một sự kiện như khi dữ liệu có sẵn để xử lý hoặc hoạt động mạng đã hoàn thành, tất cả điều này đều sử dụng I / O.
Tất cả các fds Async I / O được quản lý bởi Vòng lặp sự kiện. Vòng lặp sự kiện đợi các fds có thể đọc được, ghi được và hết thời gian chờ. Khi một sự kiện (hoặc thời gian chờ) xảy ra, hàm epoll_wait kết thúc và trả về kết quả. Sau đó, hàm gọi lại có thể được thực thi để xử lý kết quả được gửi từ Vòng lặp sự kiện. Bởi vì vòng lặp sự kiện OpenSwoole dựa trên epoll_wait, nó rất hiệu quả so với các triển khai vòng lặp sự kiện khác vì epoll_wait chỉ trả về trạng thái đã thay đổi của bộ mô tả tệp được đăng ký với vòng lặp sự kiện, cắt bỏ mọi tài nguyên và thời gian lãng phí.
Những điều cần cân nhắc (Things to consider)
Khi một lượng lớn fds được đăng ký trên Vòng lặp sự kiện và một số lượng lớn sự kiện được tạo (hoặc trả về) cùng một lúc, các hàm gọi lại tương ứng được thực thi từng cái một, điều này là do vòng lặp sự kiện chỉ có thể xử lý một gọi lại tại một thời điểm.
Bạn có thể sử dụng API Vòng lặp sự kiện để thêm các hàm gọi lại sự kiện vào Vòng lặp sự kiện chính trong quy trình. Điều này cho phép bạn sử dụng API để tương tác với các hàm cấp thấp như epoll / kqueue từ PHP, vì epoll không được hỗ trợ trên MacOS, khi chạy Swoole trên MacOS, nó sử dụng kqueue để đạt được chức năng tương tự.
Trước khi sử dụng API này, bạn phải hiểu cách hoạt động của I / O không chặn, ghép kênh I / O và Vòng lặp sự kiện.
Chỉ các id I / O không chặn mới được thêm vào vòng lặp sự kiện, không nên thêm IO chặn vào Vòng lặp sự kiện. Vòng lặp sự kiện OpenSwoole sẽ quản lý tất cả các lệnh gọi hệ thống ghép kênh I / O cho bạn trong nội bộ nhưng bạn phải đảm bảo chỉ sử dụng I / O có thể được giám sát qua fds hoặc bật OpenSwoole Coroutine Hooks để xử lý bất kỳ mã chặn nào có thể có trong sự kiện vòng. Tất cả những gì bạn phải làm là đăng ký các sự kiện I / O bằng cách sử dụng API vòng lặp sự kiện ở cấp độ PHP.
Nó có thể được sử dụng để quản lý một ổ cắm được tạo bằng API luồng / ổ cắm với Vòng lặp sự kiện, cho phép bạn xử lý kết quả của một sự kiện ổ cắm trong một lệnh gọi lại và cho phép vòng lặp sự kiện xử lý các sự kiện đọc và ghi.
Bạn không nên sử dụng trực tiếp trong ứng dụng của mình.
Các Method
Swoole\Event::set
Swoole\Event::add
Swoole\Event::del
Swoole\Event::exit
Swoole\Event::wait
Swoole\Event::write
Swoole\Event::defer
Swoole\Event::dispatch
Swoole\Event::cycle
Swoole\Event::isset
Lời Kết
Giới thiệu về php swoole.
Cài đặt và cấu hình php swoole.
Hi vọng với bài viết này, bạn có thể có thêm kiến thức về php swoole . Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com