Giới thiệu về Swoole - Một Framework xử lý bất đồng bộ của PHP cực nhanh
Bài đăng này đã không được cập nhật trong 5 năm
Bài viết này chỉ mang tính chất tham khảo, thích hợp cho những bạn đang làm Node/PHP hoặc muốn chọn công nghệ để viết ứng dụng real-time.
Mình nhớ cách đây khá lâu, khoảng năm 2012 gì đó, cộng đồng lập trình rộ lên một công nghệ mới giúp xử lý bất đồng bộ (cũng như là các tác vụ theo thời gian thực, real-time) một cách trơn tru và nhanh chóng - tên là Node.js. Hồi đó, PHP đã bộc lộ một điểm yếu rất lớn, đó là hỗ trợ xử lý bất đồng bộ không tốt chút nào, dẫn đến performance xử lý các tác vụ real-time tệ hại (Chỉ bằng khoảng 1/6 so với Node thì phải, ảnh Benchmark cũng lâu rồi mình không tìm được nữa). Vậy nên hồi đó cộng đồng lập trình chuyển sang Node.js khá nhiều.
Tuy nhiên, công nghệ là thứ không ngừng thay đổi, PHP hiện nay đã lên phiên bản 7, tối ưu lại rất nhiều về nền tảng của nó, và nhóm phát triển Swoole đã tận dụng tốt điều này, tạo nên một "Production-Grade Async programming Framework for PHP" giúp xử lý các tác vụ không đồng bộ hay nhiều tác vụ đồng thời (concurrency) với một tốc độ khủng khiếp. Thử so sánh một chút nhé:
Vậy điều gì đã khiến Swoole nhanh như vậy? Đó là vì Swoole là một PHP Extension, viết bằng C++ nên nó có thể tối ưu tốc độ tới mức độ tầng thấp (Linux Kernel), và PHP cũng hỗ trợ sẵn đa luồng nữa. Trông cũng có vẻ xịn xò, vậy cùng tìm hiểu tiếp về Swoole nhé.
Swoole là gì?
Swoole là một PHP Extension, cài qua PECL và ứng dụng viết ra thường chạy qua PHP Cli, giúp tạo ra một HTTP Server với performance cao. Bạn có thể cài qua hướng dẫn trên trang chủ: https://www.swoole.co.uk/ Ngoài ra, nếu bạn là một người làm Laravel thì không nên bỏ qua Laravel Swoole https://github.com/swooletw/laravel-swoole.
Lưu ý: Vì nó hoạt động dựa trên Linux Kernel nên Swoole không chạy được trên Windows nhé, trừ khi bạn dùng Máy ảo cài hđh Linux hoặc Windows Linux subsystem
Demo
Ta sẽ làm theo các bước giống trên trang chủ hướng dẫn để cài đặt, hoặc đơn giản là gõ 2 dòng sau:
sudo apt-get install php php7.2-dev
sudo pecl install swoole
Sau khi cài xong Swoole, nó sẽ nhắc nhở bạn thay đổi file php.ini. Thường là trong đường dẫn /etc/php/7.2/cli/php.ini (Mình cài bản 7.2, bạn có thể thay đổi lại cho đúng phiên bản bạn cài). Ta thêm dòng này vào cuối file (Để bật extension Swoole)
extension=swoole.so
Sau đó ta tạo lần lượt 3 file này trong một folder bất kỳ để thực hiện demo:
index.php - Giao diện cho người dùng
server.php - Server HTTP để người dùng kết nối và xem giao diện
socket.php - Server Websocket để người dùng kết nối websocket (Giống socket.io vậy), từ đây bạn có thể phát triển ra các ứng dụng như Chat hay Video Call...
Sau đó, mở 2 cái Terminal riêng và chạy 2 lệnh tương ứng với 2 cái Terminal:
php server.php
php socket.php
Xong rùi đó, giờ ta có thể bật trình duyệt lên và gõ đường dẫn 127.0.0.1:9501 để tận hưởng thành quả
Log bên server socket:
Lời kết
Cảm ơn các bạn đã dành thời gian ra đọc Hi vọng bài viết của mình có thể giúp chút ích cho các bạn Nếu thấy hay hãy để cho mình 1 upvote để mình có động lực viết tiếp.
All rights reserved