PHP ノート (上級 PHP)、PHP ノート
上級では、PHP の開発と運用効率を向上させるためのデータベース、Cookie、セッションの使用について説明します
PHP プログラマーがマスターする必要がある MySQL 操作
- プロジェクトのテーブルを設計する
- SQL ステートメントを使用する
- MySQL ディレクトリ構造
- データディレクトリにはライブラリファイルが保存されます
- MySQL 管理コマンドは bin ディレクトリに保存されます
- *.ini ファイルは MySQL の構成を記録します
MySQL DB に接続します:
- mysql -h SQL アドレス -u ユーザー名 -p パスワード (mysql -h localhost -u root -p123456 など)
- 安全な方法: 最初に「mysql -h SQL address -u username -p」と入力し、Enter キーを押してからパスワードを入力します
データ定義言語 (DDL)
- 定義: データベース内にさまざまなオブジェクト (テーブル、ビュー、インデックス、シノニム、クラスターなど) を作成するために使用されます。
- SQL文
- データベースを作成する
-
リーリー
- テーブルを作成する
リーリー
- テーブルを変更する
- データ型
- 数値型
- UNSIGNED: 未署名のストレージとして指定されます
- 整数整形
- TINYINT 1 バイト (-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 4 バイト (-3.402 823 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、 02 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 693 134 2 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 295Bytesバイナリ形式の非常に大きなテキスト データ
LONGTEXT 0-4 294 967 295Byte 非常に大きなテキスト データ
- CHAR はより高速に処理され、VARCHAR は可変サイズです
- バイナリ保存は主に非テキストファイルの保存に使用されます
- ENUM (列挙型) は最大 65535 個の値を保存でき、フィールドには 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: このフィールドを符号なしの値に設定します。これは数値型のみにすることができます
- zerofill: このフィールドのレコードの値が指定された桁数に達しない場合、数値型のみ可能な「0」で埋めます
- auto_increment: このフィールドの値を自動的に増加させるように設定します。同時にインデックスまたは主キーを設定する必要があります。
- null および not null: フィールドを空にすることを許可するかどうかを設定します。空でない値に設定し、デフォルトで使用することをお勧めします。
デフォルト: このフィールドのデフォルト値を設定します。入力しない場合は、デフォルト値が使用されます。
-
インデックス
- 利点:
- 短所:
- 作成コストと維持コストが比較的高い
- リソースを占有しています
- 主キー: インデックス値は一意である必要があり、テーブルごとに 1 つだけ存在します
- 一意のインデックス (一意): インデックス値は一意である必要がありますが、テーブルには複数の
を持つことができます
- 通常のインデックス: あまり多くの制限がない最も基本的なインデックス
- 全文インデックス (filltext): MyISAM でのみ使用できます。テーブルが大きいほど効果は高くなりますが、速度は遅くなります。
作成して使用するには、MySQL インデックス タイプのリストを表示して、MySQL を効率的に実行できます-
データテーブルの種類と保存場所
MySQL は、さまざまなストレージ エンジンのニーズに合わせて最適なストレージ エンジンを選択できます-
データテーブルタイプはストレージエンジンです-
タイプまたはエンジンキーワードを使用してテーブルタイプを指定します-
一般的に使用されるテーブルの種類
-
マイサム
-
高速読み取り操作を重視-
一部サポートしていない機能(トランザクション)-
InnoDB
-
MyISAM がサポートしていない一部の機能をサポートします-
全文インデックス作成はサポートしていません
-
かなりスペースを取る
-
特徴
| マイサム
| InnoDB
|
トランザクション処理
| サポートされていません
| サポート
|
データ行ロック
| サポートされていません
| サポート
|
外部キー制約
| サポートされていません
| サポート
|
テーブルスペースが占有されています
| 比較的小さい
| もっと大きく
|
全文インデックス
| サポート
| サポートされていません
|
MySQL のデフォルト文字セット
- utf8推奨
- 文字セット: MySQL が文字列を保存する方法を定義するために使用されます
- 文字セットキーワードを使用して文字セットを指定します
- 校正ルール: ルールは文字列の比較方法を定義します。
データ操作言語 (DML)
- 主な形式は 3 つあります。
- 1) 挿入: INSERT
- テーブル名[(フィールドリスト)]に挿入 value(値リスト1)[,(値リスト2)...]
- テーブル名の後にフィールドリストがある場合、値リストはフィールドリストと1対1で対応します。フィールドリストがない場合、値リストはテーブル内のフィールドと1対1で対応します。
2) アップデート: UPDATE-
update tablename set field name='value' [条件]-
-
3) 削除: 削除-
算術演算子、論理演算子、比較演算子、ビット演算子などの演算子を使用できます-
データクエリ言語 (DQL)
基本構造はSELECT[ALL|DISTINCT]句、FROM句、WHEREで構成されています
-
句で構成されるクエリ ブロック:
-
<フィールドリスト>を選択-
FROM -
[WHERE/GROUP BY/ORDER BY]-
DISTINCT とは、重複したレコードを表示しないことを意味します-
曖昧さを引き起こす可能性があるフィールド名のエイリアスを作成するには、as キーワードを使用します-
データ制御言語 (DCL)
定義: データベースにアクセスするための特定の権限の付与または取り消し、データベース操作トランザクションの時間と効果の制御、データベースの監視などに使用されます。 -
MySQL 組み込み関数
位置: select ステートメントと句 where order by have、update delete ステートメントと句-
フィールド名は関数内で変数として使用でき、変数の値は列に対応するすべての値になります-
よく使われる
-
文字列関数
-
concat: 受信パラメータを文字列に連結します-
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) は、文字列 str 内のすべての文字列 a を文字列 b に置き換えます-
- strcmp(s1,s2): S1 が S2 より小さい場合は -1 を返し、S1 が S2 より大きい場合は 1 を返し、等しい場合は 0 を返します (比較は ASCII コードです)。
- substring(str,x,y) は、文字列 str 内の位置 x から始まる長さ y の部分文字列を返します
- 数値関数
- abs(x): 絶対値を返します
- ceil(x): x より大きい最小の整数を返します
- floor(x): x 未満の最大の整数を返します
- mod(x,y): x と y の係数を返します
- rand(): 0-1 の間の乱数を返します
- round(x,y): パラメータ x の丸め結果を小数点以下 y 桁に返します
- truncate(x,y): 数値 x を小数点以下 y 桁に切り捨てた結果を返します
- 日付機能
- curdate(): 現在の年、月、日を返します
- curtime(): 現在の時、分、秒を返します
- now(): 現在の日付を返します
- unix_timestamp(time): UNIX タイムスタンプを返します
- from_unixtime(): Unix タイムスタンプを日付に変換します
- week(): タイムスタンプの週を返します
- year(): タイムスタンプの年を返します
- hour(): タイムスタンプの時間を返します
- minutes(): タイムスタンプの分を返します
- month(): タイムスタンプの月を返します
- date_format(time,"%Y-%m-%d %H:%i:%s"): フォーマットされた戻り時間
- プロセス制御機能
- if(value,t,f): 値が true の場合は t を返し、値が false の場合は f を返します
- ifnull(value1,value2): value1 が空の場合は value2 を返し、value1 が空でない場合は value1 を返します
- 値 1 の場合、値 2 の場合
値 3 の場合、値 4 の場合
...
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 はデータベースへの接続によって返されるリソースです。このパラメーターが追加されない場合、デフォルトは最近作成されたデータベース リソースです- 。
mysql_query(): SQL ステートメントを実行します。ステートメントが結果セットを返す場合、関数は正常に実行され、結果セットを返します。ステートメントが結果セットを返さない場合、関数は正常に実行され、true を返します。
-
mysql_errno(): エラー番号を返します
- mysql_error(): エラー情報を返すmysql_close(): データベースリソースを閉じます。パラメータは使用されず、開いているリソースはデフォルトで閉じられます (推奨)
-
mysql_insert_id(): AUTO_INCREMENT が設定されていない場合は、自動的に増加する ID を返します
。
- mysql_affected_rows(): 影響を受ける行の数を取得しますmysql_fetch_row($result): 結果セットからデータを取得し、インデックス配列を返します
- mysql_fetch_assoc($result): 結果セットからデータを取得し、連想配列を返します
- mysql_fetch_array($result): 結果セットからデータの一部を取得し、インデックス配列と連想配列を返します
- mysql_fetch_object($result): 結果セットからデータを取得し、オブジェクトを返します
- 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 ステートメントを実行します。ステートメントが結果セットを返す場合、関数の実行は正常に結果セット オブジェクト mysqli_result を返します。ステートメントが結果セットを返さない場合、関数の実行は true を返します。
方法
-
affected-rows(): 影響を受ける行の数を返します-
errno(): エラー番号を返します-
error(): エラー情報を返します-
insert_id(): 自動的に増加する ID を返します-
リソースを閉じる-
mysqli_result: データベースへのクエリによって返された結果セットを表します
-
プロパティ:
-
$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 ステートメントを実行でき、ステートメントを繰り返す必要がなく、データを直接送信できます。
- 受信データと送信データは実行可能ステートメントではなく値クラスとしてのみ使用されるため、SQL インジェクションを防止します
-
オブジェクトを作成する
- mysqli オブジェクトを作成した後、オブジェクトの stmt_init() メソッドを使用して mysqli_stmt オブジェクトを初期化します明細書を準備して送信する
- ステートメント内のパラメーター値はプレースホルダー「?」に置き換える必要があります。
- mysqli_stmt の prepare($sql) メソッドを使用して、準備のためにステートメントをサーバーに送信します
- mysqli_stmt オブジェクトを作成する必要はありません。mysqli で prepare($sql) を直接使用して SQL ステートメントを準備し、mysqli_stmt オブジェクトを返します
-
プレースホルダーに値を渡す(パラメータをバインド)
- bind_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()を使用して結果セットを解放します
-
リソースを閉じる
- close()メソッドを使用して閉じます機能
-
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は送信値に設定されます
- 名前のプレースホルダー
- $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 例外をスローしてはなりません
- Try catch を使用して、接続例外、SQL ステートメント例外などのさまざまな例外をキャッチします。
mamcache/memcached
- 高性能分散メモリオブジェクトキャッシュシステム。メモリ内に巨大なハッシュ テーブルを維持することで、メモリ内のデータを維持します
- 仕組み
- PHP が初めてデータをクエリするとき、データは mamcache に保存され、次回クエリするときは最初に mamcache にアクセスします。
- インストール
- Linux でのインストール
- Windows下インストール
- memcache コマンド
コマンド |
説明 |
例 |
ゲット |
値を読み取る |
マイキーを取得 |
セット |
無条件でキーを設定します |
マイキーを0 60 5に設定します |
追加 |
新しいキーを追加します |
新しいキーを追加 0 60 5 |
交換 |
既存のキーを上書きします |
キーを交換 0 60 5 |
追加 |
既存のキーにデータを追加する |
キーを追加 0 60 15 |
プリペンド |
既存のキーにデータを追加します |
キーを先頭に追加 0 60 15 |
増加 |
数値キーの値を指定された数値だけインクリメントします |
マイキー2を追加 |
デク |
数値キーの値を指定された数値だけデクリメントします |
デクラマイキー5 |
削除 |
既存のキーを削除します |
マイキーを削除 |
すべてフラッシュ |
特定のアイテムをすぐに無効化します |
すべてフラッシュ |
n秒以内にすべてのアイテムを無効化します |
フラッシュオール900 |
統計 |
一般的な統計を出力します |
統計 |
メモリ統計を出力します |
統計スラブ |
メモリ統計を出力します |
統計malloc |
より高いレベルの割り当て統計を出力する |
統計項目 |
|
統計の詳細 |
|
統計サイズ |
統計をリセットします |
統計リセット |
バージョン |
プリントサーバーのバージョン。 |
バージョン |
冗長 |
ログレベルを上げる |
冗長 |
やめて |
Telnetセッションを終了する |
やめて |
PHP中使用memcache
- 类:memcache
- 连接:memcache::connect($host,$port)
-
<span>1</span> <?<span>php
</span><span>2</span> <span>$memcache</span> = <span>new</span><span> Memcache;
</span><span>3</span> <span>$memcache</span>->connect("localhost",11211) or <span>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的基础学习算是完成了,需要多做多学,方能提高!
http://www.bkjia.com/PHPjc/980026.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/980026.htmlTechArticlePHP笔记(PHP高级篇),php笔记 高级篇中将涉及数据库的使用以及Cookie和Session会话,提高PHP的开发效率和运行效率 PHP程序员需要掌握的MyS...