- /**
- * Created by PhpStorm.
- * User: jifei
- * Date: 15/11/24
- * Time: 20:58
- *
- * Millions of users per minute, real-time statistics of the total number of online users in the last 15 minutes
- */
- class OnlineUser
- {
- public $prefix_key = "online";//key prefix
- public function __construct()
- {
- $this->redis = new Redis();
- }
- /**
- * Add new online users to the collection
- *
- * @param $uid
- */
- public function addUser($uid)
- {
- $this->redis->sAdd($this->prefix_key . date('hi '), $uid);
- }
- /**
- * Get the number of online users
- *
- * @param $start_min Statistics start minute hi format
- * @param $end_min Statistics end minutes
- *
- * @return mixed
- */
- public function userNum($start_min, $end_min)
- {
- //The first parameter, the key name of the union
- $params[] = $this->prefix_key . $start_min . '_' . $end_min;
- //Traverse all the minutes in the time interval and put them into the parameters
- for ($min = $start_min; $min < $end_min; $min++) {
- $params[] = $this->prefix_key . $min;
- }
- //Find the union of all minute users and save it. The performance is much faster than direct calculation and return, eliminating the need for data transmission
- $num = call_user_func_array([$this->redis, "sUnionStore"], $params);
- //Delete the temporary union
- $this->redis->delete($params[0]);
- return $num;
- }
- }
Copy code
|