2010-08-06 34 views
9

Làm cách nào để có danh sách tất cả các phiên PHP đang hoạt động trên máy chủ và truy cập chúng từ bên trong một cá thể của người dùng?Truy cập các phiên hoạt động trong PHP

Trường hợp thúc đẩy hiển thị danh sách tất cả người dùng hiện đang hoạt động trên trang web, nơi tên người dùng được lưu trữ trong phiên PHP của từng người dùng. Lưu ý: Tôi biết rằng tôi có thể tạo trạng thái của riêng mình thông qua cơ sở dữ liệu (hoặc thậm chí hệ thống tập tin), nhưng tôi đang tìm cách sử dụng các cơ chế phiên PHP được xây dựng sẵn.

+0

có thể trùng lặp của [Lặp qua tất cả các phiên của máy chủ trong PHP] (http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php) – ircmaxell

+0

Có, đó là - Tôi đã không tìm thấy một trong những tìm kiếm, nhưng đánh giá cao liên kết. – Greg

+0

Có thể trùng lặp của [Lặp qua tất cả các phiên của máy chủ trong PHP] (https://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php) – Finwe

Trả lời

7

Xem câu trả lời, mặc dù có thể, điều đó không có nghĩa là bạn nên làm điều đó. Định dạng trong đó các phiên được lưu trữ không được ghi lại và có thể thay đổi bất kỳ lúc nào (ngay cả giữa các phiên bản nhỏ).

chính xác cách để thực hiện việc này là triển khai session handler của riêng bạn. Nó không phải là khó, thực sự.

0

Các phiên được lưu trữ dưới dạng tệp trong thư mục phiên tạm thời của bạn. Bạn sẽ có thể xác định vị trí này trong php.ini (hoặc sử dụng phpinfo()). Đó là tất cả các phiên. Bạn sẽ có thể kiểm tra thời gian tệp để xem liệu chúng có đang hoạt động trong vòng x phút cuối cùng không.

1

Bạn không thể sử dụng phiên làm việc này, bạn sẽ phải lưu trữ người dùng trực tuyến trong DB và chỉ đặt dấu thời gian hoặc tương tự, hiển thị tất cả những người đang hoạt động trong 5 phút, xóa hồ sơ của họ.

6

phiên Danh sách

<?php 
print_r(scandir(session_save_path())); 
?> 

Kiểm tra cho một phiên cụ thể

<?php 
session_start(); 
echo (file_exists(session_save_path().'/sess_'.session_id()) ? 1 : 0); 
?> 

Time phiên file cuối cùng Thay đổi

<?php 
session_start(); 
echo filectime(session_save_path().'/sess_'.session_id()); 
?> 

Như đã được thực hiện cho đến khi chết, nó không phải là thực hành tốt nhất để xử lý các phiên theo cách này, nhưng nếu cần thiết, chúng sẽ hoạt động mà không cần kiểm tra/sửa đổi đường dẫn lưu trữ phiên (hữu ích nếu bạn chuyển sang máy chủ khác một cấu hình khác).

Các vấn đề liên quan