電子書籍の厳選無料作品が豊富!

例えばperlだとhoge.cgiとhuga.cgiが動くと2つプロセスが立ち上がりますがphpだと1つで済むのですか?

例えばhoge.phpとhuga.phpが動いても1つのプロセスで済むのですか?

A 回答 (2件)

> ApacheのモジュールとしてPHPがインストールされた環境で実行します



であれば、PHPのプログラムはApacheの子プロセスの一部として実行されます。
Apacheは親プロセスはブラウザーからのアクセスを受付けるだけで、受付た後の処理は子プロセスに引継ぎ子プロセスとブラウザーの間で通信が行われます。


> requireで読み込むと子プロセスも1つになるのですか?

PHP自体の実行としては、ファイルが別々でもincludeやrequireで読み込んだプログラムは一つのプログラムとして実行されます。
実際には最初に呼ばれたファイルを開き、includeやrequireされたファイルを開きながら一つのプログラムとしてメモリ上に展開します。
メモリ上に展開したPHPプログラムをPHPの言語エンジンで実行するためのプログラムとしてコンパイルを行い、コンパイル結果を言語エンジンで実行します。
従って1つ1つのファイル毎に実行される訳ではありませんので、ブラウザからの1回のリクエストは1つのプロセスで処理することになります。
但し、PHPのアクセラレータを使用すると若干動作が変わります。


> 子プロセスとゆうのはオーバヘッドにはあまり関係ないですか?
何のオーバーヘッドでしょうか。
Apacheの子プロセス自体は、親プロセスがApacheの設定情報に基づき必要数を予め作成してリザーブしていますので、ブラウザーからアクセスがあってから子プロセスに処理が引き継がれるまでのオーバーヘッドは気にするほどでは無いと思います。
よほど突発的にアクセスが急増するような状況で無い限り、アクセスが来てから子プロセスを作成するような動作にはならないと思います。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございました(_ _
phpが優れている理由がわかった気がします

お礼日時:2013/05/21 15:36

PHPのプログラムをどうやって実行するか次第です。



コマンドラインから別々に実行すれば、それぞれは別プロセスです。
ApacheのモジュールとしてPHPがインストールされた環境で実行したら、Apacheの子プロセスの一つで実行されるので、子プロセスとしてみれば別々だけど親プロセスは一つです。

また、hoge.phpがhuga.phpにincludeされて実行されるのであれば、どのような実行方法でも一つのプロセスとして実行されます。
    • good
    • 0
この回答へのお礼

お答え頂きありがとうございます

ApacheのモジュールとしてPHPがインストールされた環境で実行します

requireで読み込むと子プロセスも1つになるのですか?

子プロセスとゆうのはオーバヘッドにはあまり関係ないですか?

お礼日時:2013/05/21 14:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!