execute( 'UPDATE ' . $this->tableName . ' SET `last_activity`=?, `status`=? WHERE `member_id`=?', array( time(), self::MEMBER_STATUS_ACTIVE, $memberId ) ); } /** * Mark members as inactive * @param string $esId - session Id * @return array - list of memberId that were marked as inactive */ public function updateByTimeout($esId){ $time = $this->getInactivityPeriod(); $result = $this->execute(' SELECT `member_id` FROM ' . self::DB_TABLE . ' WHERE `es_id`= ? AND `last_activity`fetchAll(); if (is_array($deactivated) && count($deactivated)){ $deactivated = array_map( function($x){ return ($x['member_id']); }, $deactivated ); $this->deactivate($deactivated); } else { $deactivated = array(); } return $deactivated; } /** * Update members to inactive state * @param array $memberIds */ protected function deactivate($memberIds){ $stmt = $this->buildInQuery('member_id', $memberIds); array_unshift($memberIds, self::MEMBER_STATUS_INACTIVE); $this->execute(' UPDATE ' . $this->tableName . ' SET `status`=? WHERE ' . $stmt, $memberIds ); } protected function getInactivityPeriod(){ return time() - self::ACTIVITY_THRESHOLD; } }