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よりもはるかに経済的です...



All Articles