アプリケーションでphp-cgiを使用します

PHPは最も一般的なプログラミング言語の1つです。 小さなホームページを書くために設計され、徐々に成長し、現在では何百万ものウェブサイトで使用されています。 ただし、問題はWebサイトに限定されません-インタラクティブ、CGI、FastCGIモードがあるため、ほとんどすべてのアプリケーションで使用できます。

CGIモードについて説明したいと思います。 その利点は、比較的単純であり、さまざまなデータをスクリプト(バイナリを含む)に送信できることです。 彼はたった1つのマイナスを持っています-アプリケーションの繰り返しの起動による仕事の速度。 ただし、このマイナスは、新しいFastCGIプロトコルを使用して修正されます。



最初に、Common Gateway Interface(CGI)とは何かを定義しましょう。 実際、これは特定の環境変数でアプリケーションを起動するだけです。 これはまだWebテクノロジーであるため、変数はHTTPプロトコルと密接に関連しています。 RFC 3875を見て、CGI / 1.1に必要な環境変数を確認してください。



POSTおよびPUT要求の場合、要求データはアプリケーションの標準入力に転送されます。

ただし、php-cgiを実行するには、これらの変数はすべて望ましいだけですが、必須ではありません。 必要な環境変数は1つだけで、RFCで指定されていない場合でも-SCRIPT_FILENAME。 ファイルシステム内のPHPスクリプトへのパス(「/home/some-user/htdocs/test.php」など)を含める必要があります。 アプリケーションのCGIを介してPHPスクリプトを実行するには、スクリプトを指定してphp-cgi(「php」ではなく「php-cgi」!)を実行し、その標準入出力をリダイレクトするだけです。

Webサーバーを作成していない場合は、出力PHPヘッダーをトリミングする必要があります。 出力をインターセプトし、最初の空の行が表示されるまで待機し(行に2つだけ改行します-"\ n \ n")、その後の行のみを使用します。

CGIモードのPHPは、スクリプトで非常に積極的に作業する必要がない場合にのみ使用し、スクリプトにデータや変数を渡すことをお勧めします。 アクティブな作業が必要な場合は、FastCGIを使用することをお勧めしますが、スクリプトに何も渡す必要がない場合は、スクリプトへのパスを引数として渡すことで、PHPインタープリターを簡単に起動できます。

根拠がないように、作業の小さな例(Windows、C#):

using System; using System.Diagnostics; namespace PhpApp { class Program { static void Main(string[] args) { Process php = new Process(); //   php-cgi php.StartInfo.FileName = "c:\\php\\php-cgi.exe"; //  ShellExecute   -     php.StartInfo.UseShellExecute = false; // ,      php.StartInfo.RedirectStandardOutput = true; //          php.OutputDataReceived += new DataReceivedEventHandler(php_OutputDataReceived); //     php-cgi   php.StartInfo.EnvironmentVariables.Add("SCRIPT_FILENAME", "test.php"); //   php.Start(); //        php.BeginOutputReadLine(); // ,  php-cgi   php.WaitForExit(); //    php.Close(); //    Console.ReadKey(); } static void php_OutputDataReceived(object sender, DataReceivedEventArgs e) { //     ( ),    if (e.Data == null) return; //     Console.WriteLine(e.Data); } } }
      
      












All Articles