ホームページ > バックエンド開発 > PHPチュートリアル > PHP は MySQL を使用してセッション実装のアイデアとサンプル コードを保存します。mysqlsession_PHP チュートリアル

PHP は MySQL を使用してセッション実装のアイデアとサンプル コードを保存します。mysqlsession_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:19:12
オリジナル
801 人が閲覧しました

PHP は MySQL を使用してセッション実装のアイデアとサンプル コード、mysqlsession を保存します

実装環境:

PHP 5.4.24
MySQL 5.6.19
OS X 10.9.4/Apache 2.2.26

1.コード

リーリー
リーリー

2. はじめに

MySQL を使用してセッションを保存するには、セッション ID、セッション データ、セッションの有効期間という 3 つの主要なデータを保存する必要があります。
セッションの使用方法を考慮すると、InnoDB エンジンを使用する必要はなく、MyISAM エンジンの方が優れたパフォーマンスを実現できます。環境が許せば、MEMORY エンジンの使用を試すことができます。
必要に応じて、セッション データを保存する列に utf8 または utf8mb4 文字セットを使用できますが、セッション ID を保存する列には必要ありません。通常は、ストレージ コストを節約できる ASCII 文字セットを使用できます。
セッションのライフサイクルを保存する列は、プロジェクトのニーズに応じて設計できます。たとえば、日時型、タイムスタンプ型、int 型などです。 datetime 型および int 型の場合、セッションの生成時刻または有効期限を保存できます。
必要に応じて、セッション テーブルの列を拡張し、読み取りおよび書き込み関数を変更して、ユーザー名などの情報を保存するための関連列をサポート (維持) できます。
現在のバージョンでは、session_set_save_handler を通じてカスタム セッション メンテナンス関数を登録するだけで済みます。その前に session_module_name('user') 関数を使用する必要はありません。
read 関数がデータを取得して返すとき、PHP は自動的にデータをデシリアライズします。通常はデータを変更しないでください。
PHP によって write 関数に渡される日付パラメータは、シリアル化後のセッション データです。通常は、データを直接変更しないでください。
このコードのロジックによれば、PHP 構成オプションのセッション有効期間設定は有効ではなくなり、この値は単独で維持できるため、必ずしも get_cfg_var を通じて取得する必要はありません。
sessionMysqlId() 関数は、多数のユーザーと複数の Web サーバーが存在する場合に衝突を回避するためのもので、通常、PHP によって自動的に生成されるセッション ID はユーザーの要件を満たすことができます。
もうだめ

3. 需要

ユーザーの数が非常に多く、アプリケーションを提供するために複数のサーバーが必要な場合、MySQL を使用してセッションを保存すると、セッション ファイルを使用するよりも一定の利点があります。たとえば、ストレージのオーバーヘッドが最小限に抑えられ、ファイル共有による複雑さを回避でき、衝突をより適切に回避でき、セッション ファイル共有よりもパフォーマンスが優れています。一般に、アクセス数が急激に増加すると、データベースを使用してセッションを保存することによって発生する問題が直線的に増加すると、セッション ファイルの使用によって発生する問題はほぼ爆発的に増加します。そうですね、もっと簡単に言ってみましょう。アプリケーションのユーザー数が少ない場合は、実際には PHP にセッションを単独で処理させることができます。MySQL を考慮する必要はありません。

メンバーログインシステムの作り方(MySQLではなくphpセッションを使用し、ユーザー情報を保存するためにTXTファイルを使用)

この問題に対しては、配列ストレージを使用し、最終的に複数文字列操作である分離された文字列に出力できます。
サンプルコードをお送りします。

緊急 PHP ユーザー ログインは、mysql データベースを使用してセッションを保存し、同時に Cookie を使用して完全なソース プログラムまたはクラスを保存します

$gb_DBname="charles_friend";//データベース名
$gb_DBuser="charles_friend";//データベース ユーザー名
$gb_DBpass="wxyzoui";//データベース パスワード
$gb_DBHOSTname="localhost";//データベースの名前ホストまたは IP アドレス
$SESS_DBH="";
$SESS_LIFE=get_cfg_var("session.gc_maxlifetime");//セッションの最大有効期間を取得します。
function sess_open($save_path,$session_name){
global $gb_DBHOSTname,$gb_DBname,$gb_DBuser,$gb_DBpass,$SESS_DBH;
if(!$SESS_DBH=mysql_pconnect($gb_DBHOSTname,$gb_DBuser,$gb_DBpass)){
echo "

  • MySql エラー:".mysql_error()."
  • ";
    die();
    if(!mysql_select_db($gb_DBname,$SESS_DBH)){
    echo "
  • MySqlエラー:".mysql_error()."
  • ";
    die();
    }
    return true;
    }
    function sess_close(){
    return true;
    }
    function sess_read($key){
    global $SESS_DBH,$SESS_LIFE;
    $qry="sesskey = '$key' および有効期限から db_session から値を選択します > ".time();
    $qid=mysql_query($qry,$SESS_DBH); $value)=mysql_fetch_row($qid)){
    return $value;
    }
    return false;
    function sess_write($key,$val){
    global $SESS_DBH,$SESS_LIFE; +$SESS_LIFE;
    $value=$val;
    $qry="db_session 値に挿入('$key',$expiry,'$value')"; if(!$qid){
    $qry="update db_session set expiry=$expiry, value='$value' where sesskey='$key' and expiry >".time(); qry,$SESS_DBH);
    }
    return $qid
    } ...残りの全文>>





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

    www.bkjia.com

    tru​​e

    http://www.bkjia.com/PHPjc/876528.html技術記事 PHP は MySQL を使用してセッション実装のアイデアとサンプル コードを保存します。mysqlsession 実装環境: PH​​P 5.4.24 MySQL 5.6.19 OS X 10.9.4/Apache 2.2.26 1. コード CREATE TABLE `session` (`ske...)
  • ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート