PHPおよびシステムスクリプトでのサーバー開発

stackoverflowには、「PHPで開発するサーバー」などの多くの質問があります。 多くの人がapache2とnginx + php-fpmを推奨しています。 しかし、今日の記事は組み込みのPHPサーバーのような機能に関するものです。

phpの組み込みサーバーは、バージョン5.4.0以降に登場し、次のコマンドによって起動されます。

$ php -S localhost:8000 index.php 

ここで:
-S-サーバーを起動します
localhost-サーバーが置かれるホスト(IPアドレス)
8000-サーバーポート
index.php-要求処理ファイル

サーバーのルーティングはこれらの機能を実行するphpファイルを使用して実行されるため、このファイルが「false」を返す場合、ファイルは直接要求されます。 そうでない場合は、ルーターとして指定したファイルが処理されます。

たとえば、次の条件をindex.phpファイルに追加する場合:

 <?php if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) { return false; //    . } else { // some code } 

次に、静的ファイルを要求すると、サーバーによって直接送信され、その他の要求はindex.phpを介して処理されます...

パート2.システムスクリプトとサーバーをphpで作成する

それでは、Linux用のシステムスクリプトを作成する方法は? 答えは非常に簡単です。まず、このスクリプトを実行するインタープリターを指定する必要があります。 phpでスクリプトを記述しているので、最初の行にインタープリターで示します。

 #!/usr/bin/php 

次に、スクリプトがコンソールから受け入れるパラメーターについて説明します。

 if(isset($argv[1])) { $host = $argv[1]; } else { help(); } if(isset($argv[2])) { $port = $argv[2]; } else { help(); } 

1番目と2番目の引数(それぞれホストとポート)をチェックする2つの単純なif。そうでない場合は、help()関数が出力されます。

 function help() { echo " usage: phpServer host port ".PHP_EOL; exit(); } 

そして最後に、サーバーを起動する命令を追加します。

 system(sprintf('php -S %s:%s', $host, $port)); 

スクリプトの準備ができたら、その権限を変更し、/ usr / bin / serverフォルダーにドロップします。

 $ chmod 0777 server $ sudo cp server /usr/bin/server 

これですべてです。プロジェクトフォルダーに移動して、コマンドでサーバーを起動するだけです。

 $ server localhost 8080 

サーバーのWebパーツにアクセスするには、アドレスバーにlocalhost :8080と入力して続行します。

結論:組み込みのphpサーバーは開発専用に設計されており、apache2やnginx + php-fpmよりもはるかに経済的です...

Source: https://habr.com/ru/post/J310254/


All Articles