コアポイント
- Ladderは、アプリケーションコードと同じ方法でデータベーススキーマの変更を追跡できるように、データベース移行を作成、実行、および管理するためのツールです。このツールは、任意の主要なフレームワークに統合でき、バージョン制御の変更と機能管理に使用できます。
- 移行は常に順番に実行され、ラダーは順番に移行を数え、データベース自体で実行された移行の記録を保存することでこれを保証し、以前の移行の再実行を妨げます。
- Ladderでは、デフォルトのユーザーアカウントなど、事前入力または「シード」データベースを作成することもできます。これは、LadderのKeyvalueストアを使用して行うことができ、後で参照するためにいくつかのデータを保存します。
- このツールは、データベース状態のステータスコマンド、データベース状態をダンプおよび復元するためのdiffおよびdiff-saveコマンド、および使用されるラダーのバージョンをチェックするためのバージョンコマンドなど、データベースを管理および監視するための追加のコマンドを提供します。
バージョン制御システムは、特にチームで作業する場合、コードの変更を追跡するために非常に貴重です。ただし、ほとんどのアプリケーションには、アプリケーションコード以上のものが含まれています。特に、パターンを変更する必要がある新しい機能を追加する場合、データベースの変更を管理することはより困難です。
モジュールで作業していると仮定し、データベーステーブルには追加の列が必要であることを認識してください。データベースクエリツールまたはコマンドラインを開き、その列を追加するだけです。ただし、これはバージョン制御アプリケーションコードのような変更の記録を残しません。これは、チームで作業するときに悪化する可能性があります。同僚が同じデータベースアップデートを実行せずにコードを変更すると、アプリケーションバージョンがクラッシュする可能性があります。これは、製品の更新をリリースするとさらに問題が発生します。これにより、同僚だけでなくユーザーにとってアプリが破損する可能性があるためです。
ソリューションの1つは、移行を使用して、データベーススキーマをコードに作成および変更する責任を転送することです。このようにして、変更はアプリケーションの残りの部分と一緒に管理でき、バージョン制御(バージョンを比較して監査証跡を維持できるなど)に慣れている機能を使用して、データベースの変更を処理できます。また、これらの変更を同じブランチまたはタグの一部にすることができるため、これらの変更をバージョンにシームレスに統合できます。
多くの主要なフレームワークには独自の移行実装がありますが、そうでない場合は、使用しない場合は、はしごを使用できます。
はしご紹介
Ladderは、データベースの移行を作成、実行、および管理するためのツールです。移行は単なるPHPクラスであるため、バージョン制御をアプリケーションの残りのコードでチェックインできます。
単一の移行でスキーマに多くの変更を加えることができますが、単一のテーブルまたは機能に移行を制限するのが最善です。
移行は常に順番に実行されます。したがって、数週間後に製品テーブルを作成して新しい移行を作成して、追加の列を追加して新しい移行を作成するとします。後者の前に前者を実行しようとすると、エラーが発生します。 Ladderは、移行に順番に移行し、データベース自体に移行を実行する記録(および時間)を保存することにより、この問題を解決します。
インストール
はしごは、BitbucketまたはComposerからダウンロードできます。ただし、起きて実行するにはいくつかのステップが必要です。
最も簡単な方法は(エレガントではないことを認めていますが)、プロジェクトルートからダウンロードまたはクローンを作成し、Ladderと呼ばれるディレクトリに配置することです。 Composerの使用に関する問題は、Composer Updateの実行が構成ファイルを上書きすることです。
5つの構成ファイルがあり、それぞれが手動で作成する必要があります。
cp ladder/config/config.php.example ladder/config/config.php cp ladder/config/database.php.example ladder/config/database.php cp ladder/config/diff.php.example ladder/config/diff.php cp ladder/config/editor.php.example ladder/config/editor.php cp ladder/config/table.php.example ladder/config/table.phpdatabase.php(データベース接続の詳細を含む)とeditor.phpを変更するだけで、希望するテキストエディターを指定し、作成時に新しい移行を自動的に開くことができます。
移行を作成
移行を作成してユーザーテーブルを作成することから始めましょう。コマンドラインについて
:これにより、Ladder/Migrations/00001_Create_Users_Tableという名前のファイルが作成されます。これには、コメントが発生したコメントの例がある基本構造が含まれています。 Ladder/config/editor.phpでauto-editをtrueに設定した場合、このファイルは指定されたテキストエディターですぐに開かれます。自由に移行を呼び出すことはできますが、一目でファイル名から移行が何をするかを見ることができると役立ちます。
php ladder/ladder.php create create_users_table
ここにファイルがどのように見えるか(明確にするためにコメントされたコードの行を削除しました):
移行が実行されたときにUP()メソッドを呼び、移行が巻かれたときのDown()メソッドを呼び出します。したがって、UP()メソッドとは逆の操作を常に実行する必要があります。この例では、up()メソッドはユーザーという名前のテーブルを作成し、down()メソッドは削除します。
class Create_Users_Table_Migration_00001 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->create_table('users') ->column('email', 'varchar', array('limit' => 128, 'null' => FALSE)) ->column('password', 'varchar', array('limit' => 32, 'null' => FALSE)); } public function down() { $this->table('users')->drop(); } }
create_table()メソッドは新しいテーブルへの参照を返しますが、テーブルクラスには新しい列を追加する列()メソッドがあります。スムーズなインターフェイスがあるため、それらをリンクして複数の列を同時に作成できます。 ID列がないことに気付くでしょう - これは自動的に作成されます - つまり、IDという名前の自動インクラメント整数プライマリキーです。
table()テーブルへの参照を返しますが、テーブルがまだ存在しない場合はテーブルも作成します。
別の移行を作成しましょう。今回は役割を作成しますテーブル:
ファイル自体:
php ladder/ladder.php create create_roles_table
ここで、実際に移行を実行する必要があります。これを行うには:
class Create_Roles_Table_Migration_00002 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->table('roles') ->column('nme', 'varchar', array('limit' => 128, 'null' => FALSE)); } public function down() { $this->table('roles')->drop(); } }
データベースを見ると、4つのテーブルがあります。
移行は自動的に作成され、どの移行が実行されたかを追跡する Migrations_kvdataも作成され、移行はキー価値ストレージに使用できます ユーザーと役割は、追加したテーブルです。php ladder/ladder.php migrateただし、役割の移行に細心の注意を払うと、名前の代わりにNMEと呼ばれる列が作成されることに気付くでしょう。この時点で、これを修正して、移行を「元に戻す」ことで、クラスを変更し、再度実行することができます。移行をロールバックするには:
cp ladder/config/config.php.example ladder/config/config.php cp ladder/config/database.php.example ladder/config/database.php cp ladder/config/diff.php.example ladder/config/diff.php cp ladder/config/editor.php.example ladder/config/editor.php cp ladder/config/table.php.example ladder/config/table.php番号2は、移動が戻ってくることを示しています。これは、主要なゼロなしで、移行ファイル名の接頭辞です。
今、あなたは単に修正を行い、再び移行を実行することができます:
php ladder/ladder.php create create_users_table移行テーブルには、ランニングコンテンツとUNRUNコンテンツの記録が保存されているため、最初の移行が再実行されることを心配する必要はありません。
再適用を使用するより速い方法もあります:
class Create_Users_Table_Migration_00001 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->create_table('users') ->column('email', 'varchar', array('limit' => 128, 'null' => FALSE)) ->column('password', 'varchar', array('limit' => 32, 'null' => FALSE)); } public function down() { $this->table('users')->drop(); } }これにより、2番目のMigration's Down()メソッドを一度に呼び出し、その後UP()メソッドを呼び出します。
しばらくして、ユーザーテーブルにステータスフィールドを含める必要がある新しい機能を開発します。これを行うには、新しい移行を作成する必要があります。
移行は次のようになります:
php ladder/ladder.php create create_roles_table
前と同様に、次のコマンドで実行してください:
class Create_Roles_Table_Migration_00002 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->table('roles') ->column('nme', 'varchar', array('limit' => 128, 'null' => FALSE)); } public function down() { $this->table('roles')->drop(); } }
ここで、データベースを確認すると、ユーザーテーブルに新しい列があることがわかります。
php ladder/ladder.php migrateデータベースシード
データベーススキーマを管理するための移行の記述に加えて、はしごを使用してデータベースを事前に入力する(つまり、シード)データベースを使用することもできます。
たとえば、create_users_table移行を拡張してデフォルトのルートユーザーアカウントを作成できます。
set()およびget()メソッドを使用して、LadderのKeyvalueストアを利用して、後で参照できるようにユーザーIDを保存していることに注意してください。
php ladder/ladder.php remove 2移行されたCSVファイルからデータをインポートすることもできます。たとえば、
csvデータを挿入する代わりに更新するには、これを行うことができます:
php ladder/ladder.php migrate
この場合、送信パラメーターは更新を実行することを意味し、3番目のパラメーターには、更新するレコードを決定するためのキーフィールドのリストが含まれています。
php ladder/ladder.php reapply 2
他のデータベースを追加
デフォルトのデータベースファイルラダー/config/database.phpは、おそらくステージングまたはリアルタイムのデータベースを追加する方法を示しています。たとえば、
このように使用する接続を指定できます:
php ladder/ladder.php create add_status_to_users_tableその他のコマンド
class Add_Status_To_Users_Table_Migration_00003 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->table('users') ->column('status', 'integer', array('null' => FALSE, 'default' => 0)); } public function down() { $this->table('users')->drop_column('status'); } }
status
ステータスコマンドを使用してデータベースステータスを取得できます。
例の出力:(元のドキュメントが特定の出力コンテンツを提供していないため、出力の例はここでは省略されています)
php ladder/ladder.php migratediffとdiff-save (これらのコマンドが元のドキュメントで詳細に説明されているため、diffとdiff-saveコマンドの説明はここで省略されています)
バージョン
(バージョンのコマンドの説明は、元のドキュメントで詳細に説明されているため、ここでは省略されています)
概要
この記事では、データベーススキーマと事前入力データを維持するために使用されるラダーを紹介します。 (元のドキュメントには梯子が要約されているため、概要部分はここで省略されています)データベースバージョンのバージョンとはしごの移行に関するFAQ
(FAQセクションはここでは省略されています。元のドキュメントはすでに詳細なFAQを提供しているため)
以上がはしごの移行によるデータベースバージョン化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
