在考虑session的问题上,我最终放弃了session: 最后我选择了myql的heap表来处理session,并且把session处理和online在线用户统计结合起来。 下面给出代码为我的一个实例(没提供其他的细节了,具体使用要相应修改) `sid` char( 32 ) NOT NULL ,
1、原本的session是使用文件来管理的。文件系统的好坏直接影响session的性能,尤其当有几K人同时在线的时候,尤其突出。解决方法有两个:数据库和文件(使用哈希路径)。
2、原有session的扩展性和可控制性不好。不利于结合我现有的系统。
3、在选用数据库的时候,我并没有选择sqlite,上次我测试sqlite效率在win xp上效率没有想象中的好。
/**
* 处理在线用户和对session的模拟
* CREATE TABLE `webqq_session` (
`uid` mediaint( 8 ) NOT NULL ,
`username` char( 80 ) NOT NULL ,
`ismember` tinyint( 1 ) NOT NULL ,
`logintime` int( 10) NOT NULL ,
`activetime` int( 10 ) NOT NULL ,
PRIMARY KEY ( `sid` )
) ENGINE = HEAP DEFAULT CHARSET = gb2312
* @author:feifengxlq
* @since:2006-10-23
* @copyright:http://www.phpobject.net
* 注: このファイルの使用は、Cookie フィルタリング、いくつかの基本関数とデータベース操作クラス
*/
class session
{
var $mysql;
var $cookie_id=webqq_sid;
var $session=array();
var $max_time=1200;/ /default minimum時間 20 分
function __construct()
{
$this->mysql=new module(TB_PREX._session);//外部サポートが必要
$this->start();
}
function start()
// Cookie がデータベース内に存在するかどうかを確認します
$sid=$ データベースに保存されます
詳細 (ここで s id =. $ 記号);
} else {
//データベースではありません
$ this-> create (); >mysql->delete(where activetime+.$this->max_time.<.time());
}
function register($name, $value,$update=false)
{
if(array_key_exists ($name,$this->session)){
レジストリ ($ name =) {
if (空 ($ name)) Return $ this-& gt; セッション;
if (array_key_exists ($ Natural, $ this-& gt; session)) {
RN $ this-& gt; セッション [$name];
//データベース内のセッション情報を更新します
function update()
{
$row[uid]=$this->session[uid];
$row[username]=$this->session[username] ; ;
$row[ismember]=" ;
$this->mysql->update($row,where sid=.$this->session[sid].); ------以下はプライベートメソッド-------------------------------------- -------- ------**/
function create()
getip() 関数は事前に定義する必要があります: 顧客の IP アドレスを取得します
setcookie($this->cookie_id,$sid,$nowtime+3600* 24); //デフォルトは24時間です
$ nowtime;
http://www.bkjia.com/PHPjc/508237.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/508237.html
技術記事
セッションの問題を検討したとき、私は最終的にセッションをあきらめました。 1. 元のセッションはファイルを使用して管理されていました。ファイル システムの品質は、特に数千人が一緒に作業している場合、セッションのパフォーマンスに直接影響します...