クライアントのブラウザからApacheのhttpd Webサーバには、TCP/IP(ソケット)を介して明確に定義されたプロトコルHTTPがあります。私はApacheのhttpdウェブサーバからPerlやPHP、あるいはCGIにどのチャネル/プロトコルが使われているのか理解するのに苦労していますか?それはプロセス間通信か、ソケットかピペットかメッセージキューか信号か?誰かが本当にシーンの後ろに何が起こっているかについて光を当てることができますか? Apacheのhttpd Webサーバーが別のプログラム(PerlまたはPHP)を実行し、出力をキャプチャしてからクライアントのブラウザに再送信するかのようですか?Apache WebサーバーはPerl、PHP、またはCGIとどのように通信し、出力を取得して応答を返しますか?
CGIプロトコルは、WebサーバがCGIプログラムと通信する方法を指定しません。 Apacheは、CGI要求を受けた外部プログラムへの双方向のパイプをオープンし、それをCGI入力データを送信し、プログラムの出力を返します
スタンドアロンCGIプログラム:二つの主要な解決策がありましたクライアント。別のプロセスとして、Webサーバーを停止せずにプログラムがクラッシュする可能性があります。欠点は、新しいプロセスを開始するのが比較的遅いことです。
内蔵CGIプログラム
プログラムは、Apacheモジュールのように書き換えると、Apacheプロセスが起動したときにのみその起動コストが発生しています。これは外部プログラムよりもはるかに高速で、Apacheの内部および他のモジュールにアクセスできます。 Apacheで最も一般的なCGIモジュールは、Perl(mod_perl)とPHP(mod_php)用のインタープリタエンジンです。
はおそらくサーバーフォールトに属しています...プログラミングに関する質問ではありません –
@Jeffrey、私は同意しません、この質問はCGIプログラミングの基本についてです。 – Fozi
しかし、彼はプロセスがどのようにコードを使ってそれを実装する方法ではないかについて質問しています... –