Tất cả bạn cần là này (sử dụng jQuery cho $ .post):
Javascript (đặt bên trong onload chức năng hay cái gì của bạn)
setInterval(function(){$.post('path/to/refresh_session.php');},600000); //refreshes the session every 10 minutes
refresh_session.php
<?php
session_start();
if (isset($_SESSION['token'])) { //if you have more session-vars that are needed for login, also check if they are set and refresh them as well
$_SESSION['token'] = $_SESSION['token'];
}
?>
(Tôi biết điều này khá giống với câu trả lời được chấp nhận, tôi thực sự muốn nhận xét về câu trả lời đó nhưng tôi chưa có đủ danh tiếng.
Thay đổi lớn nhất là trong JavaScript, bạn không cần toàn bộ chức năng, chỉ một dòng.)
INFO EXTRA:
Mặc dù tôi nghĩ rằng nó là đủ để chỉ cần gọi session_start()
trong php, nếu tôi đọc quyền này (http://nl3.php.net/function.session-start):
Các đọc callback sẽ truy xuất bất kỳ dữ liệu phiên hiện có nào (được lưu trữ ở định dạng đặc biệt được lưu trữ theo định dạng ) và sẽ không được tự động hóa và được sử dụng để tự động về mặt vật lý cư trú siêu đô thị $ _SESSION khi cuộc gọi trả lời đọc dữ liệu phiên đã lưu trở lại xử lý phiên PHP.
Và trong khi thử nghiệm, tôi chỉ đặt mã ở trên trên trang khách truy cập của mình chứ không phải trên trang quản trị. Nhưng tôi đã có cả hai trang mở trong cùng một trình duyệt (Chrome), và trang quản trị vẫn đăng nhập là tốt, ít nhất là trong hơn một giờ (không kiểm tra nữa). NHƯNG, tôi không biết nếu nó vẫn hoạt động nếu bạn chỉ sử dụng session_start()
, mà không tự làm mới bất kỳ phiên var ở tất cả ..
Dù bằng cách nào, tôi muốn chắc chắn rằng phiên vars tôi cần thực sự vẫn còn ở đó :)
Có thể thực hiện một số cuộc gọi ajax? Bạn có thể mô tả kịch bản của bạn nhiều hơn một chút không? Có thể một số mẫu mã sẽ giúp :) – Gogol
Thú vị. Tôi đang đối phó với một vấn đề tương tự nhưng quan điểm của tôi về vấn đề này là người ta nên tránh tự động đặt lại thời gian chờ của phiên tại một khoảng thời gian như vậy sẽ có hiệu quả tạo ra một phiên vô hạn mà sẽ tồn tại miễn là cửa sổ trình duyệt được mở. Thay vào đó, tôi khuyên bạn nên tăng tuổi thọ tối đa và thời gian chờ có thể được làm mới dựa trên hành động của người dùng. Ngay cả di chuyển chuột cũng có thể thực hiện thủ thuật, bắt đầu hẹn giờ khi di chuột. Trừ khi một số thành phần tương tác người dùng được bao gồm nó tạo ra một lỗ hổng bảo mật lớn. Phiên được thiết kế hết hạn. –