ホームページ  >  記事  >  バックエンド開発  >  session_PHP チュートリアルを使用しない理由

session_PHP チュートリアルを使用しない理由

WBOY
WBOYオリジナル
2016-07-13 17:36:26928ブラウズ

 在考虑session的问题上,我最终放弃了session:
  1、原本的session是使用文件来管理的。文件系统的好坏直接影响session的性能,尤其当有几K人同时在线的时候,尤其突出。解决方法有两个:数据库和文件(使用哈希路径)。
  2、原有session的扩展性和可控制性不好。不利于结合我现有的系统。
  3、在选用数据库的时候,我并没有选择sqlite,上次我测试sqlite效率在win xp上效率没有想象中的好。

  最后我选择了myql的heap表来处理session,并且把session处理和online在线用户统计结合起来。

  下面给出代码为我的一个实例(没提供其他的细节了,具体使用要相应修改)


/**
* 处理在线用户和对session的模拟
* CREATE TABLE `webqq_session` (

`sid` char( 32 ) NOT NULL ,
`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 feifengxlq#gmail.com
* @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

tru​​e

http://www.bkjia.com/PHPjc/508237.html

技術記事

セッションの問題を検討したとき、私は最終的にセッションをあきらめました。 1. 元のセッションはファイルを使用して管理されていました。ファイル システムの品質は、特に数千人が一緒に作業している場合、セッションのパフォーマンスに直接影響します...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。