public function poll($microtime = false, $admin = false) { session_write_close(); $pollMs = 500000; $timeout = $counter = 30; $timeoutBuffer = 5; set_time_limit($timeout + $timeoutBuffer); if (microtime(true) > $microtime + 10) { $microtime = microtime(true); } ChatPiwikUser::setLastPoll($microtime, $admin); while ($counter > 0) { $data = $this->getNewMessages($microtime, $admin); if (count($data) > 0) { break; } else { usleep($pollMs); $counter -= $pollMs / 1000000; } } if (count($data) > 0) { return $data; } return false; }