我正在寻找一种简单(无数据库)方法来列出网站上有多少用户活跃.我能想到的最简单的方法是计算开放会话的数量.
这段代码应该有效:
$number_of_users = count(scandir(ini_get("session.save_path")));
Run Code Online (Sandbox Code Playgroud)
当然它不会因为该目录的安全限制(因为应该有!!).有没有人知道另一种方法来访问此号码而不更改目录权限.
注意: 我正在寻找一个不涉及数据库或降低PHP会话安全性的选项.
结束注意:对于任何人来到这个问题,我最终使用了一个cronjob(每分钟运行一次)从root做了类似的事情:
ls /var/lib/php5/ | wc -l > /var/www/sessioncount
Run Code Online (Sandbox Code Playgroud)
确保/var/www/sessioncountapache用户可以读取该文件.然后你可以用PHP读取文件:
$number_of_users = file_get_contents("/var/www/sessioncount");
Run Code Online (Sandbox Code Playgroud)
<?
// you must set your own accessible session path atop every page.
session_save_path("/home/some/other/location/"); # SECURITY VIOLATION!!!
session_start();
function session_count() {
$filter = "sess_";
$files = scandir(session_save_path());
$count = 0;
foreach ($files as $file) {
if(strpos($file,$filter)===0) {
$count += 1;
}
}
return $count;
}
echo session_count();
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14837 次 |
| 最近记录: |