ホームページ  >  記事  >  バックエンド開発  >  PHP ノート (高度な PHP)

PHP ノート (高度な PHP)

WBOY
WBOYオリジナル
2016-06-13 12:17:331273ブラウズ

PHP ノート (PHP 上級章)

上級章では、PHP の開発と運用効率を向上させるためのデータベースと Cookie およびセッション セッションの使用について説明します。

PHP プログラママスターする必要がある MySQL 操作

  • プロジェクトのテーブルを設計する
  • SQL ステートメントを使用する
  • MySQL ディレクトリ構造
    • データ ディレクトリにライブラリが格納されるファイル
    • bin ディレクトリには、MySQL 管理コマンドが保存されます。
    • *.ini ファイルは、MySQL DB に接続するための MySQL

の構成を記録します。

  • mysql -h sql address -u username -p パスワード (mysql -h localhost -u root -p123456 など)
  • 安全な方法: 最初に「mysql -h sql Address -」と入力します。 u ユーザー名 -p" を入力し、Enter キーを押し、パスワードを入力します

データ定義言語 (DDL)

  • 定義: データベース内にさまざまなオブジェクトを作成するために使用されます --- -- テーブル、ビュー、インデックス、シノニム、クラスターなど
  • SQL ステートメント
    • データベースの作成
    • <span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">DATABASE</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">IF NO EXISTS</span><span style="color: #ff0000;">]</span> DatabaseName
    • テーブルの作成
    • <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 が文字列を格納する方法を定義するために使用されます
        • 文字セット キーワードを使用して文字セットを指定します
      • 照合ルール: ルールは文字列を比較する方法を定義します
        • 照合ルールを指定するには、collat​​e を使用します

      データ操作言語 (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 を返します
                  • リソースを閉じる
                    • close(): 接続を閉じます
                • 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
                  • リソースを閉じる
                    • 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 は送信値に設定されます
                      • 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 でのインストール
                  • は libevent イベントに基づいているため、最初に libevent ライブラリをインストールする必要があります

                • Windows でのインストール
                  • デフォルト ポート 11211
              • 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配置
                    • 配置服务器端的php.ini
                  • 开启会话
                    • 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的基础学习算是完成了,需要多做多学,方能提高!

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

関連記事

続きを見る