<?php
class UserActivityMonitor {
private $logFile;
public function __construct($logFile = 'user_activity.log') {
$this->logFile = $logFile;
}
// 记录用户活动
public function logActivity($userId, $activityType, $pageUrl, $additionalData = []) {
$logEntry = [
'timestamp' => date('Y-m-d H:i:s'),
'user_id' => $userId,
'activity_type' => $activityType,
'page_url' => $pageUrl,
'additional_data' => $additionalData
];
// 将日志条目写入文件
file_put_contents($this->logFile, json_encode($logEntry) . PHP_EOL, FILE_APPEND);
}
// 获取日志文件中的所有用户活动记录
public function getLogs() {
if (file_exists($this->logFile)) {
$logs = file($this->logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
return array_map('json_decode', $logs);
}
return [];
}
// 获取特定用户的活动日志
public function getUserActivity($userId) {
$logs = $this->getLogs();
return array_filter($logs, function($log) use ($userId) {
return $log->user_id == $userId;
});
}
// 分析用户活跃度
public function analyzeUserActivity() {
$logs = $this->getLogs();
$userActivity = [];
foreach ($logs as $log) {
if (!isset($userActivity[$log->user_id])) {
$userActivity[$log->user_id] = 0;
}
$userActivity[$log->user_id]++;
}
arsort($userActivity); // 按活动次数降序排列
return $userActivity;
}
}
// 示例使用
$monitor = new UserActivityMonitor();
// 模拟记录用户活动
$monitor->logActivity(1, 'login', '/login');
$monitor->logActivity(1, 'view_page', '/dashboard');
$monitor->logActivity(2, 'login', '/login');
$monitor->logActivity(2, 'view_page', '/settings');
$monitor->logActivity(1, 'logout', '/logout');
// 获取并输出特定用户的活动日志
$user1Logs = $monitor->getUserActivity(1);
echo "User 1 Activity Logs:\n";
foreach ($user1Logs as $log) {
echo "Time: {$log->timestamp}, Type: {$log->activity_type}, Page: {$log->page_url}\n";
}
// 输出所有用户的活跃度分析
$userActivityAnalysis = $monitor->analyzeUserActivity();
echo "\nUser Activity Analysis:\n";
foreach ($userActivityAnalysis as $userId => $activityCount) {
echo "User ID: {$userId}, Activity Count: {$activityCount}\n";
}
这个PHP代码片段实现了一个用户活动监控与分析系统,适用于需要记录和分析用户行为的场景,如网站或应用的使用情况监控。该工具可以帮助开发者和管理员了解用户交互模式,并做出相应的优化决策。具体功能如下:
- 用户活动记录:通过
logActivity
方法,记录用户的活动信息,包括用户ID、活动类型(如登录、浏览页面等)、页面URL以及其他附加数据。 - 日志读取与用户过滤:通过
getLogs
方法,可以读取所有用户的活动记录;通过getUserActivity
方法,可以筛选并查看特定用户的活动日志。 - 用户活跃度分析:通过
analyzeUserActivity
方法,统计每个用户的活动次数,并按活跃度排序,有助于识别最活跃或最不活跃的用户。
此系统适用于需要追踪用户行为的应用,如分析用户如何使用网站、识别活跃用户、评估特定功能的使用情况等,为进一步的用户体验优化提供数据支持。