2012-10-30 6 views
8

Trên mỗi lần tải trang, tôi chạy session_start() để tiếp tục phiên hiện tại. Khi nào bắt đầu đếm session.gc_maxlifetime? Lần đầu tiên session_start() được gọi và cookie của phiên đó được đặt? Hay bộ hẹn giờ khởi động lại mỗi session_start()?Khi nào session.gc_maxlifetime đếm bắt đầu

Với session.gc_maxlifetime thiết lập để khoảng 24 phút khi trong thời gian này các dữ liệu phiên nên được thu gom rác

1. 12:00:00 First page load, session_start(), session cookie created 
2. 12:10:00 page load, session_start() 
3. 12:26:00 page load, session_start() 
4. 12:55:00 page load, session_start() 

Nếu bộ đếm thời gian bắt đầu từ ngày tải trang đầu tiên session_start() sau đó tôi mong chờ nó sẽ rác thu thập trên tải 3 Nhưng nếu nó đặt lại mỗi session_start(), sau đó nó sẽ không thu thập cho đến khi tải 4.

Tôi hy vọng nó là thứ hai bởi vì sau đó tôi có thể làm một nhịp tim javascript mỗi vài phút để gọi một trang chạy session_start().

Nếu trước đây, session.gc_maxlifetime bắt đầu tính từ việc tạo cookie phiên tôi cần phải hủy/tạo lại hoặc regenerate_id để đặt lại số lượng?

+0

Bạn đang sử dụng trình xử lý phiên mặc định hoặc trình xử lý khác? – wgcrouch

+0

là triết lý này hay có vấn đề gì bạn đang cố giải quyết? –

+0

Trình xử lý phiên mặc định –

Trả lời

2

Đó là từ cuộc gọi session_start() cuối cùng HOẶC/VÀ lần cuối cùng nó được ghi vào. Đoán của tôi sẽ là sau này vì điều đó sẽ thay đổi dấu thời gian "sửa đổi lần cuối" mà trình thu thập rác PHP sẽ sử dụng để xác định xem nó có cần xóa hay không. Trong trường hợp này, nó bắt đầu đếm từ tập lệnh cuối cùng để kết thúc sử dụng session_start() hoặc kết thúc rõ ràng với kịch bản lệnh giữa bằng cách gọi session_ write_ close().

P.S. Điều này sẽ làm cho "nhịp tim" đẹp và đơn giản (trong một dòng): http://prototypejs.org/api/ajax/periodicalUpdater