我们有一个小脚本,使用memcache跟踪并发会话,客户端每10秒钟发出一次新请求,以“更新”其会话,并获得最新的在线用户数。
$session = $_GET['session'];
$streamid = $_GET['streamid'];
if(!is_null($session) && !is_null($streamid)) {
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$data = $memcache->get($streamid);
if($data === false) {
$data = array($session => time()+10);
$memcache->add($streamid,$data,0,10);
} else {
$now = time();
$streamCount = count($data);
for($i=0;$i<$streamCount;$i++) {
if($data[$i] > $now) {
unset($data[$i]);
}
}
$data[$session] = time()+10;
}
echo count($data);
} else {
echo 'no session or stream specified';
}
答案 0 :(得分:2)
你尝试过这个吗?你需要优化吗?也许它就像你现在想要的那样。似乎更好的解决方案是将其解耦并尽可能地将其写为干净。把定时器放在呼叫周围,如果你发现某些东西很慢,那么试着修复那段代码。如果您不需要,请不要进行优化。