ホームページ > バックエンド開発 > PHPチュートリアル > [モダン PHP] 第 2 章 新機能 7 組み込み HTTP サーバー

[モダン PHP] 第 2 章 新機能 7 組み込み HTTP サーバー

WBOY
リリース: 2016-06-23 13:28:11
オリジナル
945 人が閲覧しました

組み込み HTTP サーバー


PHP 5.4.0 以降、組み込み Web サーバーがあることをご存知ですか?これは、Apache または nginx を使用して PHP ページをプレビューする方法しか知らない PHP 開発者にとって、もう 1 つの未発見の宝石です。 PHP の組み込み Web サーバーを運用環境で使用することはできませんが、この機能はローカル開発には最適なツールです。


PHP コードを書いているかどうかに関係なく、私は PHP の組み込み Web サーバーを毎日使用しています。私は、Drupal フレームワークのコンテンツ管理システムを使用して Web サイトを構築するときに、Laravel および Slim Framework アプリケーションをプレビューするためにこれを使用し、また、静的な HTML および CSS をプレビューするためにも使用します。


PHP の組み込みサーバーは Web サーバーであることを思い出してください。 HTTP プロトコルのみを使用し、PHP ファイルに加えて静的リソースを返すことができます。 MAMP、WAMP、またはその他の強力な Web サーバーを使用せずに、HTML ページをローカルで開発およびプレビューできます。


サーバーを起動する


PHP Web サーバーを起動するのは簡単です。ターミナル プログラムを開き、プロジェクトのドキュメント ルート ディレクトリに入り、次のコマンドを実行します:

php -S localhost:4000


このコマンドは、新しい PHP Web サーバーを起動できます。このサーバーには、localhost 経由でアクセスできます。 。ポート 4000 でリッスンします。現在の作業ディレクトリは、Web サーバーのドキュメント ルート ディレクトリです。


ブラウザを開いて http://localhost:4000 にアクセスして、アプリケーションをプレビューします。アプリケーションの閲覧には Web ブラウザを使用するため、各 HTTP リクエストはターミナル プログラムに記録され、ターミナルに直接出力されます。これにより、アプリケーションに 400 エラーが発生するか 500 エラーが発生するかを検出できます。


場合によっては、他のデバイスがローカル環境の PHP Web サーバーにアクセスできるようにする必要があります (プレビューに iPad またはローカル Windows 仮想マシンを使用するなど)。この要件を達成するには、PHP Web サーバーで localhost の代わりに 0.0.0.0 を使用して、すべてのネットワーク接続からのリクエストをリッスンすることができます。

php -S 0.0.0.0:4000


PHP Web サーバーを停止する準備ができたら、ターミナル プログラムを閉じるか、Ctrl+C を押します。


サーバーの構成


PHP INI 構成ファイルに対応するアプリケーションは、特にアプリケーションにメモリ使用量、ファイルのアップロード、デバッグ、バイトコード キャッシュなどがある場合、非常に一般的なプロセスです。ニーズ。 PHP 組み込みサーバーを使用する場合、-c パラメーターを使用して、指定した INI ファイルを使用するようにサーバーに指示できます:

php -S localhost:8000 -c app/config/php.ini


Putカスタム INI ファイル アプリケーションのルート ディレクトリに置くことをお勧めします。また、バージョン管理を使用して INI ファイルを保存し、開発チームの他の開発者と共有することもできます。


ルーティング スクリプト


Apache や nginx とは異なり、PHP 組み込みサーバーには明らかな欠陥があります。それは、.htaccess ファイルをサポートしていないということです。したがって、多くの一般的な PHP フレームワークで使用されるフロントエンド コントローラーを PHP の組み込みサーバーで使用するのは非常に面倒です。


フロント コントローラーは別個の PHP ファイルであり、すべての HTTP リクエストは (.htaccess ファイルまたは書き換えルールを介して) フロント コントローラーに転送されます。フロントエンド コントローラー ファイルは、対応する PHP コードへのリクエストのルーティングと分散を担当します。この一般的なパターンは、Symfony およびその他の一般的な PHP フレームワークで使用されます。


PHP の組み込みサーバーは、ルーティング スクリプトを使用してこの欠陥をわずかに補うことができます。ルーティング スクリプトは、各 HTTP リクエストの前に実行されます。スクリプトが false を返す場合、現在の HTTP リクエスト アドレスに対応する静的リソースが直接返されます。それ以外の場合、スクリプトによって返されるコンテンツは HTTP リターン コンテンツとしてブラウザに返されます。つまり、ルーティング スクリプトは実際には .htaccess ファイルの機能をコピーしています。


ルーティング スクリプトの使用は非常に簡単です。PHP スクリプトのファイル アドレスをユーカリ ツリーとして PHP 組み込みサーバーの起動コマンドに渡すだけです:

php -S localhost:8000 router.php


組み込みサーバーからのリクエストからの判断


アクセスされた PHP スクリプトが PHP 組み込みサーバーからのものなのか、Apache などの従来の Web サーバーからのものなのかを区別できると便利な場合があります。 nginx。おそらく、nginx に特別な HTTP ヘッダー (Status: など) を追加する必要がありますが、PHP Web サーバーでは機能しません。 php_sapi_name() 関数を通じて PHP Web サーバーを特定できます。現在リクエストしているスクリプトが PHP 組み込みサーバーからのものである場合、この関数は文字列 cli-server を返します。

PHP 組み込み Web サーバーは実稼働環境では使用できません。これはローカル開発のみを目的として設計されています。運用サーバーで PHP 組み込みサーバーを使用している場合、多くのユーザーが不満を抱き、Pingdom からの大量のクラッシュ通知に対処することになります。


  • 組み込みサーバーのパフォーマンスが低下する理由は、一度に 1 つのリクエストしか処理できず、他のリクエストはブロックされるためです。 PHP ファイルが遅いクエリまたはリモート API の戻りでスタックすると、Web アプリケーションが応答しなくなります。
  • 組み込みサーバーは、限られた MIME タイプのみをサポートします
  • 組み込みサーバーは、ルーティング スクリプトを使用した URL 書き換えを制限します。より高度な URL 書き換え操作を実装するには、Apache または nginx が必要です
  • ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート