Tại sao session.cookie_lifetime được đặt thành 23 ngày? [đóng cửa]


9

Theo như tôi hiểu thì thời gian tồn tại của phiên tại Drupal bị giới hạn bởi session.gc_maxlifetimecài đặt theo mặc định là khoảng 2,3 ngày.

Sau đó, việc sử dụng session.cookie_lifetimeđược đặt thành 23 ngày là gì?

Đây là đoạn trích từ settings.php:

/**
 * Set session lifetime (in seconds), i.e. the time from the user's last visit
 * to the active session may be deleted by the session garbage collector. When
 * a session is deleted, authenticated users are logged out, and the contents
 * of the user's $_SESSION variable is discarded.
 */
ini_set('session.gc_maxlifetime', 200000);

/**
 * Set session cookie lifetime (in seconds), i.e. the time from the session is
 * created to the cookie expires, i.e. when the browser is expected to discard
 * the cookie. The value 0 means "until the browser is closed".
 */
ini_set('session.cookie_lifetime', 2000000);

Hãy giả sử rằng tôi đã đặt cả hai session.gc_probabilitysession.gc_divisor thành 1 chỉ vì câu hỏi này.


Bởi vì bạn không muốn một cookie biến mất một cách bí ẩn? Bạn muốn nó ở đó để phiên có thể bị vô hiệu một cách duyên dáng? Điều này có gây ra bất kỳ vấn đề thực tế cho bạn?
Mołot

Thế là xong. Nhưng nó có phải là một ý tưởng tốt hơn để làm cho cookie hết hạn vào lúc 40 giờ và phiên máy chủ lúc 51 giờ không? Tôi có nghĩa là tuổi thọ cookie là ít hơn thời gian hết hạn máy chủ.
dùng5858

Điều này phần lớn dựa trên ý kiến ​​và chỉ có các tác giả PHP thực sự có thể nói. Ồ, và nó phụ thuộc vào trình xử lý phiên bạn quyết định sử dụng. Nhưng thường thì không, bạn không muốn một phiên được cho là hoạt động và có thể sử dụng trong X nhiều giờ hơn mà không có ai sử dụng do thiếu cookie. Đó là một sự lãng phí lưu trữ. Để lại cookie lâu hơn có nghĩa là hầu như luôn có ai đó có thể sử dụng dữ liệu phiên được lưu trên máy chủ, vì vậy không có dữ liệu phiên nào được giữ là một sự lãng phí.
Mołot

Câu trả lời:


16

ini_set ('session.gc_maxlifetime', 200000);

  1. Giá trị này là dành cho máy chủ.
  2. Nó là một cài đặt cho Bộ sưu tập rác phiên.
  3. Nếu lần truy cập gần nhất của người dùng xảy ra trước 200000 thì phiên này đủ điều kiện để thu gom rác.
  4. Vì nó là GC, giá trị phiên có thể bị loại bỏ và không bắt buộc. Nếu một hành động GC xảy ra sau khi phiên được thực hiện đủ điều kiện cho GC, nó sẽ bị xóa.
ini_set('session.cookie_lifetime', 2000000);
  1. Giá trị này là dành cho trình duyệt.

  2. Đây là thời gian tối đa tuyệt đối cho đến khi trình duyệt có thể giữ cookie này hoạt động.

  3. Giá trị 0 ở đây có nghĩa là ngay lập tức hoặc khi trình duyệt bị đóng.

Để trả lời câu hỏi của bạn nói riêng.

  1. Nếu người dùng không quay lại máy chủ sau 2,3 ​​ngày, phiên của anh ta sẽ bị xóa khi bộ sưu tập rác phiên chạy.
  2. Nếu anh ta tiếp tục nhấn một trang trên máy chủ cứ sau 2.2 (dưới 2,3 ngày) thì phiên của anh ta sẽ vẫn hoạt động. Nhưng nó chỉ có thể hoạt động cho đến 23 ngày kể từ khi phiên được tạo lần đầu tiên.
  3. Vì vậy, điều đó có nghĩa là session.cookie_lifetimethời gian tối đa tuyệt đối của một phiên.

1
Lưu ý người thu gom rác xác suất. Thêm chi tiết: stackoverflow.com/a/1270960 .
chữ số

Câu trả lời tuyệt vời, cũng có thể được thực hiện trong php.ini nếu bạn có quyền truy cập vào máy chủ của mình, ví dụ như trong /etc/php/5.6/fpm/php.inicài đặt điều chỉnh (hoặc thêm) : session.gc_maxlifetime = 2000000. Cảm ơn bạn.
trị liệu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.