<span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">TABLE</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">IF NOT EXISTS</span><span style="color: #ff0000;">]</span><span style="color: #000000;"> TableName (colname1 type </span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">property</span><span style="color: #ff0000;">]</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">index</span><span style="color: #ff0000;">]</span><span style="color: #000000;">,colname2 type </span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">property</span><span style="color: #ff0000;">]</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">index</span><span style="color: #ff0000;">]</span><span style="color: #000000;">,...)[tableType] [tableCharSet];</span>
ログイン後にコピー
- テーブルの変更
- データ型
- 数値型
- UNSIGNED: 符号なしストレージとして指定
- 整数型
- TINYINT 1 Byte (-128, 127 ) (0 , 255) 小さい整数値
SMALLINT 2 バイト (-32 768, 32 767) (0, 65 535) 大きい整数値
MEDIUMINT 3 バイト (-8 388 608, 8 388 607) (0 , 16 777) 215) 大きな整数値
INT または INTEGER 4 バイト (-2 147 483 648, 2 147 483 647) (0, 4 294 967 295) 大きな整数値
BIGINT 8 バイト (-9 233 372 036 854 775) 808, 9 223 372 036 854 775 807) (0, 18 446 744 073 709 551 615) 最大整数値
- Float
- FLOAT 4 バイト (-3.402 82 3 466 E 38、1.175 494 351 E-38)、0、(1.175 494 351 E-38、3.402 823 466 351 E 38) 0、(1.175 494 351 E-38、3.402 823 466 E 38)
- DOUBLE 8 バイト (1.797 693 134 862 315 7 E-308、2.225 073 858 507 201 4 E-308)、0、(2.225 073 858 507 201 4 E-308、1.797 6 93 134 862 3) 15 7 E 308) 0 、(2.225 073 858 507 201 4 E-308、1.797 693 134 862 315 7 E 308)
- 文字
- CHAR 0-255Byte固定長文字列、
VARCHAR 0-255Byte 可変長文字列、長さを指定する必要があります
TINYBLOB 0-255Byte 255 文字を超えないバイナリ文字列
TINYTEXT 0-255Byte 短いテキスト文字列
BLOB 0 -65 535Byte バイナリ形式の長文テキストデータ
TEXT 0-65 535Byte 長文テキストデータ
MEDIUMBLOB 0-16 777 215Byte バイナリ形式の中長テキストデータ
MEDIUMTEXT 0 -16 777 215Byte 中長テキストデータ
LOGNGBLOB 0-4 294 967 295Byte バイナリ形式の非常に大きなテキスト データ
LONGTEXT 0-4 294 967 295Byte 非常に大きなテキスト データ
- CHAR 処理速度の比較 高速、VARCHAR は可変サイズ
- バイナリ保存は主に非テキスト ファイルの保存に使用されます
- ENUM、列挙型は最大 65535 個の値を保存でき、1 つのフィールドには 1 つの値のみ保存できます
- SET、コレクション タイプ、最大 64 個の値を保存でき、1 つの値セグメントに複数の値を保存できます
- 日付タイプ
- DATE 3Byte 1000-01- 01/9999-12-31 YYYY- MM-DD 日付値
TIME 3Byte '-838:59:59'/'838:59:59' HH:MM:SS 時刻値または期間
YEAR 1Byte 1901/2155 YYYY 年の値
DATETIME 8Byte 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 日付と時刻の混合値
TIMESTAMP 8Byte 1970-01-01 00:00 :00/2037 年のいつか YYYYMMDD HHMMSS 混合日時値、タイムスタンプ
※任意 データ型は文字列形式で格納されます。型は自動的に変換できます
※計算を容易にするため、時間を php タイムスタンプとして保存します
データ フィールドの属性
- unsigned: フィールドを unsigned に設定しますvalue (数値型のみ可能)
- zerofill: レコードの値が指定された桁数に達しない場合にフィールドを「0」で埋めるように設定します。数値型のみ可能
- 🎜 >
auto_increment: このフィールドの値を自動的に拡張するように設定します。同時にインデックスまたは主キーを設定する必要があります。- null および not null: フィールドが空であることを許可するかどうかを設定します。空でない値に設定することをお勧めします。デフォルトで使用します。
- default: 入力されていない場合は、このフィールドのデフォルト値を設定しますデフォルト値を使用します
インデックス
欠点: - 作成コストと保守コストが比較的高い
- リソースを占有する
- 主キー: インデックス値は一意である必要があり、各テーブルには
- 一意のインデックス (一意): インデックス値は一意である必要がありますが、テーブルは 1 つです。複数存在することができます。
- 通常のインデックス (インデックス): 多くの制限のない、最も基本的なインデックス
- 全文インデックス (filltext): MyISAM でのみ使用できます。テーブルが大きいほど、効果は高くなります。より良いですが、速度が遅くなります。
- 作成して使用するには、MySQL インデックス タイプのリストを参照して作成できます。 MySQL は効率的に実行されます
データ テーブルの種類と保存場所
- MySQL は、さまざまなストレージ エンジン要件に合わせて最適なストレージ エンジンを選択できます
- データ テーブル タイプはストレージ エンジンです
- タイプまたはエンジン キーワードを使用してテーブル タイプを指定します
- 一般的に使用されるテーブルの種類
- MyISAM
- 高速読み取り操作を重視
- 一部の機能 (トランザクション) をサポートしていません
- InnoDB
- MyISAM がサポートしていない一部の機能をサポートします
- フルテキスト インデックスをサポートしません
- 多くのスペースを消費します
功能 |
MyISAM |
InnoDB |
事务处理 |
不支持 |
支持 |
数据行锁定 |
不支持 |
支持 |
外键约束 |
不支持 |
支持 |
表空间占用 |
相对较小 |
较大 |
全文索引 |
支持 |
不支持 |
MySQL デフォルト文字セット
- 推奨 utf8
- 文字セット: MySQL が文字列を格納する方法を定義するために使用されます
- 文字セット キーワードを使用して文字セットを指定します
- 照合ルール: ルールは文字列を比較する方法を定義します
- 照合ルールを指定するには、collate を使用します
データ操作言語 (DML)
- 主な形式は 3 つあります:
- 1) 挿入: INSERT
- テーブル名[(フィールド リスト)] 値(値リスト 1)[,(値リスト 2)...]
- にテーブル名の後に挿入します。フィールドリストがある場合、値リストはフィールドリストと 1 対 1 に対応します。フィールドリストがない場合、値リストはテーブル
2) 更新: UPDATE-
update tablename set field name='value' [条件]-
3) 削除: DELETE-
あなた算術演算子、論理演算子、比較演算記号などの演算子を使用できます。ビット演算子 -
データ クエリ言語 (DQL)
基本構造は SELECT[ALL|DISTINCT] 句、FROM 句センテンス、WHERE 句で構成されるクエリ ブロックで構成されます。テーブルまたはビュー名> [WHERE/GROUP BY/ORDER BY]-
- DISTINCT は重複レコードを表示しないことを意味します
- を使用しますフィールド名に別名を付けるための as キーワード。曖昧さを引き起こす可能性のあるフィールド名に使用されます。
-
- データ制御言語 (DCL)
定義: 使用データベース権限へのアクセスの付与または取り消し、データベース操作トランザクションの時間と効果の制御、データベースの監視などを行います。
MySQL 組み込み関数
- 位置: select ステートメントと句 where order by getting、update delete ステートメントと句
関数を使用できます。フィールド名を変数として指定し、変数の値は列に対応するすべての値です
一般的に使用される- 文字列関数
- concat: 受信パラメータを連結しますinto A string
insert(str,x,y,insert): str の x 位置から開始して、y 長さの文字列を insert-
lower(str),upper(str) に置き換えます。 ) : 文字列を大文字と小文字に変換します - left(str,x) right(str,x) str の左 (右) に x 文字を返します。x が null の場合、null
- lpad (str,n,pad) rpad(str,n,pad) Pad を使用して、文字列 str を左端 (右) から全長 n になるまでパディングします
- trim(str),ltrim(str )、rtrim(str) は、左右の両側のスペースを削除します。
- replace(str,a,b) は、すべての文字列 a
- strcmp を文字列 str 内の文字列 b に置き換えます。 (s1,s2): S1 が S2 より小さい場合は -1 を返し、S1 が S2 より大きい場合は 1 を返し、等しい場合は 0 を返します (比較は ASCII コードです)
-
- substring( str, x,y) 文字列内の位置 x から始まる長さ y の部分文字列を返します。 str
-
数値関数
- abs(x): 絶対値を返します
ceil(x): x より大きい最小の整数を返します
- floor(x): x より小さい最大の整数を返します
- mod(x,y): x とを返しますy Modulo
- rand(): 0-1 の間の乱数を返します
- round(x,y): パラメータ x を小数点以下 y 桁に丸めた結果を返します
- truncate(x,y): 数値の結果を返します 🎜>curtime(): 現在の時、分、秒を返します
- now(): 現在の日付を返します
- unix_timestamp(time ): UNIX タイムスタンプを返します
- from_unixtime(): Unix Convert タイムスタンプを日付に変換します
week(): タイムスタンプの週を返します
- year():タイムスタンプの年
- hour(): タイムスタンプの時間を返します
- minut(): タイムスタンプの分を返します
- month(): 月を返しますタイムスタンプ
- date_format(time,"%Y-%m-%d % H:%i:%s"): フォーマットされた戻り時間
-
- プロセス制御関数
- if(value,t,f): value が true の場合は t を返し、value が false の場合は f を返します
- ifnull(value1,value2): value1 が空の場合は value2 を返します、value1 が空でない場合、value1
- case
when value1 then value2- when value3 then value4
......- else フォルト END
value1 が true の場合は value2 を返し、value3 が true の場合は value4 を返し、それ以外の場合は false を返します-
その他の使用法: mysql ステートメントの case when-
-
-
その他の関数
database(): データベース名を返します
version(): MySQL バージョンを返します
- user(): MySQL ユーザー
- inet_aton(ip): IP をネットワーク文字に変換します セクション順序
inet_nton(): ネットワークのバイトオーダーを IP に変換します
password(): MySQL ユーザーのパスワードを暗号化します
- md5(str): 文字列を暗号化します
-
-
- PHP 操作データベース
- データベースに接続します
- mysql_connect(IP,user,psw): IP はデータベース アドレス、user はユーザー名、psw はユーザーのパスワードです。接続が成功すると、接続が失敗した場合は false が返されます。
- mysql_select_db($dbname,[$res]): $dbname です。ライブラリ名。$res はデータベースへの接続によって返されるリソースです。追加しない場合、このパラメータは最近作成されたデータベース リソース SQL ステートメント入力
- mysql_query にデフォルト設定されます。 (): SQL ステートメントを実行します。ステートメントが結果セットを返す場合、関数は正常に実行され、ステートメントが結果セットを返さない場合、関数は正常に実行され、true
mysql_errno(): エラー番号を返します mysql_error(): エラー メッセージを返します-
- 閉じるデータベース リソース
mysql_close(): データベース リソースを閉じます。パラメータは使用されず、開いているリソースはデフォルトで閉じられます (推奨) mysql_insert_id(): 自動的に増加する ID を返します。AUTO_INCREMENT が設定されていない場合は、false を返します。mysql_affected_rows(): 影響を受ける行を取得します。 Number-
- からデータを取得します。 result set
mysql_fetch_row($result): 結果セットからデータの一部を取得し、インデックス配列を返しますmysql_fetch_assoc($result ): 結果セットからデータの一部を取得し、連想配列を返します - mysql_fetch_array($result): 結果セットからデータの一部を取得し、インデックス配列と連想配列を返します
- mysql_fetch_object($result): From結果セットからデータを取得し、オブジェクトを返します
- mysql_data_seek($result,$row): ポインタを指定された位置に移動します
-
- 結果セットからフィールドを取得します
mysql_num_rows($result): 結果セット内のフィールド数を取得します-
mysql_num_fields($result): 結果セット内の列数を取得します- mysql_field_name( $result): 結果セットのフィールド名を取得します
-
-
mysqli 操作データベース
- PHP5以降に新しく追加された機能はすべてオブジェクト指向なので、mysqliはオブジェクトの形で追加されています
- Mysqliの利点
- 改善を示しています
- 増加関数
- 効率が大幅に向上
- より安定しました
- mysqli 拡張機能によって提供される 3 つのクラス
- mysqli: 接続に関連するクラス
- 構築メソッド
- mysqli([$host [, $username [, $passd[, $dbname [,$port [, $socket ]]]]] )
- 接続が成功した場合はオブジェクトが返され、接続が失敗した場合は false が返されます
- 接続失敗情報の表示
- connect_errno():接続エラー番号を返す
- connect_error(): 接続エラー情報を返す
- SQL 文入力
- query(sql): SQL 文を実行 (if)ステートメントは結果セットを返します。関数の実行は結果セット オブジェクト mysqli_result を返します。ステートメントが結果セットを返さない場合、関数の実行は true
- Method
を返します。 - affected-rows(): 影響を受ける行を返します。 Number
- errno(): エラー番号を返します。
- error(): エラー メッセージを返します。
- insert_id( ): 自動的に増加する ID を返します
- リソースを閉じる
- mysqli_result: クエリによってデータベースに返された結果を表現します Set
- Attributes:
- $num_rows: 結果セット内のレコードの数
- $field_count : 結果セット内のフィールドの数
- $current_field: 現在の列の位置を取得します
- メソッド:
- レコードの処理
- fetch_row(): mysql_fetch_row() と同じ
- fetch_assoc(): mysql_fetch_assoc() と同じ 整合性
- fetch_array(): mysql_fetch_array() と整合性
- fetch_object( ): mysql_fetch_object() と一致します
- data_seek(): mysql_data_seek() と一致します
- free(): 結果セットを解放します
- プロセスフィールド
- fetch_field(): カラム情報を取り出してオブジェクトとして返す
- fetch_fields() : すべてのカラム情報を取り出してオブジェクトとして返す
- field_seek() : フィールドポインタの移動
- 複数の SQL ステートメントの実行
- multi_query (sql1[;sql2]): "; で区切って複数の SQL ステートメントを実行できます。 "。複数の結果セットがある場合、それらはすべて返されます。
- next_result(): multi_query() を返します。 次の結果セット
- more_results(): 次の結果セットが含まれているかどうかを確認します。
- mysqli_stmt: 前処理クラス
- 利点:
- Mysqil_stmt は、mysqli とmysqli_result は
- を完了できます。より効率的で、データが異なるだけの場合は、ステートメントを繰り返す必要はありません。
- を防ぐために、データを直接渡すだけです。 SQL インジェクション。受信データと送信データは値クラスとしてのみ使用され、実行可能ステートメントとしては作成されないため、
- オブジェクト
- mysqli オブジェクトの作成後、オブジェクトの stmt_init() メソッドを使用して、mysqli_stmt オブジェクトを初期化します
- ステートメントでパラメーターを準備して送信します
- 値にはプレースホルダー「?」を使用する必要があります。
- の代わりに、mysqli_stmt の prepare($sql) メソッドを使用して、サーバーにステートメントを送信して準備します。
- mysqli_stmt オブジェクトを作成する必要はありません。mysqli で prepare( $sql) SQL ステートメントを準備し、mysqli_stmt オブジェクトを返します
- 値をプレースホルダー (バインド パラメーター) に渡します
- Use binding_param($ type, $var1[,$var2...]) バインディングパラメータ
- $type は、それぞれ整数、倍精度、文字列、バイナリリソースを表す i、d、s、b です
- $type の型の数はプレースホルダーと同じである必要があり、$var の数もプレースホルダーの数と同じである必要があります
- 変数 $var に値を代入します
- SQL ステートメントを実行します
- 結果セットは返されません
- execute() メソッドを使用して、挿入されたパラメータを実行し、ブール型を返します
- 返された結果セットがあります
- 結果セットをバインドするには、bind_result($var1[,$var2...]) を使用します
- fetch( ) ステートメントを実行し、毎回 1 つの結果を取得して、それを に渡します。bind_result() の変数
- は、store_result() を使用してステートメントを実行し、すべての結果を一度に取得し、結果セットを返します。次に、fetch() を使用して各レコードを取得します
- result_matedate() は、フィールド情報を取得するために使用される結果セットを返します
- result_free() を使用して結果を解放しますset
- リソースを閉じる
- 関数を閉じる
- mysqli および mysqli_result サポート関数、mysqli_stmt は基本的に
- トランザクション処理
- テーブルの作成
- テーブル タイプは MyISAM であり、トランザクション機能をサポートしていません。InnoDB タイプのテーブルを作成する必要があります
- 自動送信をオフにしてください
- autocommit() : パラメータが 0 または false の場合、自動送信をオフにします
- トランザクションをコミット
- commit(): トランザクションを送信 (複数の SQL ステートメントを実行)
- ロールバック トランザクション
- rollback(): ロールバック トランザクション (複数の SQL ステートメントを実行)
- その他のメソッド
- set_charset($string): 文字セットの設定と取得
PDO
- 利点:
- 変更時データベースを作成するため、コードを変更する必要はありません
- 欠点:
- mysql や mysqli ほど効率的ではありません
- 3 つのクラス
- PDO: PHP とデータベース サービス間の接続を表します
- PDO オブジェクトの作成
- dpo($dsn,$username,$passd[,$array]): $dsn mysql データベースに接続します。「mysql:host=ip:port;dbname=$string」に設定すると、$array がチューニング パラメータになります。
- DSN (データ ソース名) データ ソース: ホストの場所、ライブラリ名を含むドライバー
- は getattribute($attribute) を使用して属性を表示し、setattribute($attribute,$value) を使用して属性を設定できます
- SQL を実行ステートメント
- query($string): 結果セットを返すステートメントを実行し、前処理オブジェクトを返します PDOStatement
- exec($string): テーブルに影響を与えるステートメントを実行します。影響を受ける行の数を返します
- デザイン エラー レポート
- setAttribute() を使用してエラー レポート モードを設定します
- ERRMODE_SILENT: エラーを表示しません。開発者自身がエラーをチェックします
- errorCode: エラー番号を返します
- errorInfo: エラー情報の配列を返します
- ERRMODE_WARNING: エラーが発生し、E_WARNING メッセージが表示されます
- ERRMODE_EXCEPTION: エラーが発生し、PDOException がスローされます
- トランザクション処理
- setAttribute() を使用してトランザクション処理を有効にし、自動送信をオフにします
- commit() を使用して、実行された SQL ステートメントを送信します
- rollback() を使用して、実行された SQL ステートメントをロールバックします
- PDOStatement : 準備されたステートメントを表し、ステートメントの実行後にそれを表します 関連する結果セット
- 関数
- ステートメントを準備します
- 結果セットを処理します
- ステートメントを準備して送信します
- ステートメント内のパラメーター値にはプレースホルダー "?" を使用できます
- プレースホルダー ":プレースホルダー名"
-
の代わりに- PDO::prepare($sql ) メソッドを使用して、準備のためにステートメントをサーバーに送信し、PDOStatement オブジェクトを返し、結果セットを保存します
- 値 (バインド パラメーター) をプレースホルダーに転送します
- bind_param($key,$value) を使用してパラメーターをバインドします
- "?" プレースホルダー
- $key はインデックス番号に設定され、
- $value は送信値に設定されます
- name placeholder
- $key はキー名に設定されます
- $value は送信された値に設定されます
- SQL ステートメントの実行
- execute() メソッドを使用して、バインドされたパラメータを持つステートメントを実行します
- execute($array ) を使用し、パラメータのバインドを避けるために $array 配列にパラメータを追加します
- レコード取得
- fetch() を使用して結果セット内の各レコードを取得し、インデックスと連想混合配列を返します。
- パラメーターは PDO::FETCH_ASSOC、戻り値の連想配列
- パラメーターは PDO:: FETCH_NUM、戻りインデックス配列
- パラメーターは PDO::FETCH_BOTH、戻りインデックス連想混合配列
- fetchAll() は結果セットの各レコードを取得し、2 つのレコードを返します。次元配列
- を回避するには setFatchMode() を使用してフェッチ モードを設定します。取得するには、モードを設定します。
- フィールド取得
- columnCount () フィールドの数を取得します
- getColumnMeta() 結果セット内の列のメタデータを返します
- PDOException: エラーを表しますPDO によって生成されます。独自のコードで PDOException 例外をスローしないでください。
- 接続例外、SQL ステートメント例外などのさまざまな例外をキャッチするには、try catch を使用してください。
mamcache/memcached
- 高性能分散メモリ オブジェクト キャッシング システム。巨大なハッシュ テーブルをメモリ内に維持することで、メモリ内のデータが維持されます。
- 仕組み
- PHP が初めてデータをクエリするとき、データは mamcache に保存されます。次回クエリを実行するときは、まず mamcache にアクセスします。
- インストール
- Linux でのインストール
- Windows でのインストール
- memcache コマンド
Command |
Description |
Example |
get |
Reads a value |
get mykey |
set |
Set a key unconditionally |
set mykey 0 60 5 |
add |
Add a new key |
add newkey 0 60 5 |
replace |
Overwrite existing key |
replace key 0 60 5 |
append |
Append data to existing key |
append key 0 60 15 |
prepend |
Prepend data to existing key |
prepend key 0 60 15 |
incr |
Increments numerical key value by given number |
incr mykey 2 |
decr |
Decrements numerical key value by given number |
decr mykey 5 |
delete |
Deletes an existing key |
delete mykey |
flush_all |
Invalidate specific items immediately |
flush_all |
Invalidate all items in n seconds |
flush_all 900 |
stats |
Prints general statistics |
stats |
Prints memory statistics |
stats slabs |
Prints memory statistics |
stats malloc |
Print higher level allocation statistics |
stats items |
|
stats detail |
|
stats sizes |
Resets statistics |
stats reset |
version |
Prints server version. |
version |
verbosity |
Increases log level |
verbosity |
quit |
Terminate telnet session |
quit |
PHP中使用memcache
- 类:memcache
- 连接:memcache::connect($host,$port)
<span style="color: #008080;">1</span> <?<span style="color: #000000;">php</span><span style="color: #008080;">2</span> <span style="color: #800080;">$memcache</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Memcache;</span><span style="color: #008080;">3</span> <span style="color: #800080;">$memcache</span>->connect("localhost",11211) or <span style="color: #0000ff;">die</span>("could not connect");
ログイン後にコピー
- 其他方法
- add:添加数据
- set/replace:修改数据
- get:获取数据
- delete:删除数据
- ......
- 何时使用memcache
- 数据库中读出来的数据,方便下次使用
- 会话控制中使用
- 技巧
- 用sql语句作为key
- 用md5()修改sql语句,使sql语句变短,便于保存
会话控制:面向连接的可靠的连接方式,通过会话控制,判断用户的登录行为
- cookie技术
- 服务器给客户端的一个文件,通过客户端的这个文件,保存用户信息,服务器根据文件,区分用户
- 设置cookie
- setcookie($key,$value,$time):头信息,不能有任何输出
- 获取cookie
- 使用全局数组$_COOKIE[]获取cookie内容
- 删除cookieti
- 用setcookie设置$value为空或不设置,$time设置为0或不设置
- session技术
- 在服务器中保存用户数据,会产生一个SessionID,可使用cookie和url传递该id
- session配置
- 开启会话
- session_start():让php的核心程序将和session有关的内建环境变量预先载入到内存中
- 开启一个会话
- 基于cookie的session,使用该函数不能有任何输出
- 返回已开启的会话
- 设置和获取session
- 使用$_SESSION[]设置和获取session
- session_id()获取和设置session的id
- 删除session
- $_SESSION=array();将session设置为空数组
- 删除cookie中的session
- session_destory():销毁session
- 基于url传递sessionid,设置url的参数为session_name,session_start()后,会自动寻找该参数
- 常量SID,当用户关闭cookie时,该常量表示session_name和session_id;当用户开启cookie时,该常量为空
- 设置php.ini中的session.use_trans_sid=1,会使页面跳转(超链接、header、表单)后面自动添加SID
- session高级技术
- php.ini中,session的设置
- session_name:设置存在cookie以及SID中的session_name
- session.use_trans_sid:设置SID是否开启,开启后,可自动添加SID
- session.save_path:设置session文件的保存位置,如果不设置,则不生成session文件
- session.gc_maxlifetime:设置session文件有效时间,超过该时间session未刷新,session文件将失效
- session.gc_probability和session.gc_divisor结合使用,定义session垃圾回收概率,算法为session.gc_probability/session.gc_divisor
- session.use_cookie:设置session写入到cookie中
- session.cookie_path:设置哪些文件的session写入到cookie中
- session.cookie_lifetime:设置session的生命周期
- session.save_handler:设置session写入方式及位置,当值为user时,可使用session_set_save_handler()函数
- session_set_save_handler(open(),close(),read(),write(),destroy(),gc()):可自定义session文件的存储路径及存储方式等
- 使用该函数定义了各个方法,像往常一样使用session
- open():在执行session_start()时,被调用
- close():在执行session_write_close()时,被调用
- read():在调用open()后,被调用
- write():脚本结束时和session_write_close()执行时,被调用
- destroy():当session使用session_destroy()或者session_regenerate_id()被销毁时,被调用
- gc():由session.gc_probability和session.gc_divisor决定,任何时候军可能被调用
- 具体用法
- 将Session写入数据库
- 将Session写入Memcache
至此,PHP的基础学习算是完成了,需要多做多学,方能提高!