Người dùng đã đăng nhập vào trang web PHP> Tôi khởi động lại Apache> Người dùng cần đăng nhập lại.
Làm thế nào để ngăn chặn điều này? (Tôi không muốn người dùng cần đăng nhập lại)
Người dùng đã đăng nhập vào trang web PHP> Tôi khởi động lại Apache> Người dùng cần đăng nhập lại.
Làm thế nào để ngăn chặn điều này? (Tôi không muốn người dùng cần đăng nhập lại)
Câu trả lời:
Lưu trữ mã thông báo phiên ở vị trí thay thế làm bản sao lưu sẽ ngăn chặn sự cố này. Bạn vẫn có thể giữ thông tin chính của mình $_SESSION
, nhưng giữ mã thông báo dự phòng:
Bạn có thể tìm thấy một số trợ giúp trong câu hỏi StackOverflow này: cách thực hành tốt nhất cho thời gian chờ phiên và đăng nhập liên tục trong php .
Dữ liệu phiên của bạn không nên bị mất chỉ vì Apache bị tắt hoặc khởi động lại trừ khi dữ liệu phiên được lưu trữ trong bộ nhớ và không được sao lưu vào đĩa (bởi hệ thống tệp hoặc cơ sở dữ liệu). Nếu không, bạn có thể khởi động lại toàn bộ máy chủ và phiên vẫn sẽ tiếp tục. Dữ liệu phiên được thiết kế để được lưu trữ lâu dài. Lần duy nhất phiên bị mất là nếu:
SID bị mất. Dữ liệu phiên vẫn tồn tại phía máy chủ, nhưng máy khách không thể khôi phục SID, do đó không thể tạo lại cùng một phiên. Điều này có thể xảy ra nếu cookie SID hết hạn (nếu đó là cookie) hoặc các liên kết phiên bị mất (nếu SID là tham số URL) hoặc SID không được đặt phía máy chủ hoặc thay đổi mà không thông báo cho khách hàng.
Dữ liệu phiên bị xóa phía máy chủ. Điều này thường xảy ra khi Trình thu thập rác phiên PHP chạy và thấy tệp phiên cũ hơn session.gc_maxlifetime (mặc định là 24 phút). Mặt khác, nó có thể xảy ra nếu ứng dụng xóa rõ ràng phiên . Trên một số máy chủ, quản trị viên cũng có thể đã cấu hình một cronjob để xóa dữ liệu phiên cũ một cách thường xuyên.
Được thực hiện bằng cách sử dụng đúng đối số với Apache:
apache2ctl -k graceful
Apache sẽ khởi động lại mà không mất các phiên hiện tại.