Tôi tự hỏi làm thế nào PHP phát hiện ra rằng một phiên cụ thể đã hết thời gian chờ.PHP phát hiện ra rằng một phiên đã hết thời gian như thế nào?
Cụ thể: Tôi đang sử dụng trình xử lý phiên mặc định (dựa trên tệp), với thời lượng phiên mặc định, v.v. Mọi thứ trong php.ini đều mặc định.
Nếu bây giờ một phiên được bắt đầu, PHP thực hiện kiểm tra (tùy thuộc vào phiên không.gi_divisor và phiên.gc_probability) nếu có bất kỳ phiên hết hạn nào. Nhưng từ đâu nhận được PHP thời gian truy cập phiên cuối cùng từ các phiên để kiểm tra?
Bản thân tệp phiên chỉ chứa khối lượng công việc, ví dụ: x|i:1;
cho số $_SESSION['x'] = 1;
, vì vậy không có thông tin về thời gian truy cập phiên cuối cùng.
Tôi nghĩ rằng không có thông tin trong bộ nhớ liên quan đến thời gian bắt đầu phiên vì các phiên vẫn hoạt động sau khi khởi động lại máy chủ đầy đủ.
Vậy, PHP lấy thông tin từ đâu? Có phải nó so sánh mtime/ctime của tập tin phiên?
Xin chào, cảm ơn câu trả lời của bạn. Bạn đã viết "PHP có thể sử dụng mtime của tập tin". Tôi khá chắc chắn rằng đây là cách PHP làm việc với các tập tin mặc định dựa trên phiên xử lý, nhưng là có bất kỳ tuyên bố chính thức về điều này? – hacksteak25
Không, nhưng bạn luôn có thể kiểm tra nguồn php nếu bạn không chắc chắn. Vì 'thời gian sử dụng cuối cùng' không được mã hóa vào chính dữ liệu phiên, nên thời gian của tệp phiên là nơi duy nhất khác có sẵn thông tin đó. PHP doesnt duy trì một cơ sở dữ liệu của mtimes ở nơi khác - nếu nó đã làm, sẽ có tùy chọn cấu hình để xác định nơi/làm thế nào dữ liệu đó sẽ được giữ. –
hy vọng rằng sẽ có một cách dễ dàng hơn là xem xét các nguồn;) Nhưng bạn đã đúng. Không có tùy chọn cho mtimes, do đó, có vẻ như không có gì ngoài thời gian của tập tin. Thanky bạn. – hacksteak25