2. 18:14 12/08/2026
Chào bạn Thu Hà,
Nhiều session handler khóa session trong lúc request đang mở để tránh hai request cùng ghi làm hỏng dữ liệu. Vì vậy, nếu một request giữ session quá lâu trong khi thực hiện I/O hoặc xử lý nặng, các request khác của cùng người dùng có thể phải chờ.
Cách làm an toàn là:
1. Đọc dữ liệu session cần thiết sớm, validate quyền/xác thực, sau đó giải phóng lock bằng session_write_close khi request không còn cần sửa session.
2. Nếu cần cập nhật session, thực hiện cập nhật nhỏ và dứt điểm trước khi release; không tiếp tục thay đổi $_SESSION sau khi đã đóng rồi mong dữ liệu tự lưu.
3. Không giữ session lock trong khi gọi API chậm, tải file lớn, chạy report hoặc chờ queue. Tách các tác vụ này thành background job nếu phù hợp.
4. Chỉ lưu tối thiểu dữ liệu trong session. Trạng thái phức tạp, lớn hoặc cần truy cập đồng thời nên có store/thiết kế khác rõ ràng hơn.
5. Kiểm thử các endpoint song song dưới cùng một user và theo dõi request duration để xác nhận lock đã được giảm.
Đừng tắt session locking một cách mù quáng. Lock có vai trò bảo toàn nhất quán; mục tiêu là rút ngắn thời gian giữ lock và làm rõ endpoint nào thực sự được phép cập nhật session.
0