ホームページ  >  記事  >  バックエンド開発  >  PHP でよく使用される 4 つの実行メソッド

PHP でよく使用される 4 つの実行メソッド

青灯夜游
青灯夜游転載
2020-04-21 09:34:563212ブラウズ

この記事では、一般的に使用される PHP の 4 つの実行方法、CGI、FastCGI、APACHE2HANDLER、および CLI を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP でよく使用される 4 つの実行メソッド

PHP には、CGI、FastCGI、APACHE2HANDLER、および CLI の 4 つの一般的な動作モードがあります。

1. CGI

CGI は、共通ゲートウェイ インターフェイスであり、プログラムです、平たく言えば、Web ページと実行プログラムをつなぐ橋のようなものです。 WEBサーバーに接続すると、HTMLで受け取った命令をサーバーの実行プログラムに渡し、サーバーの実行プログラムの結果をHTMLページに返します。 CGI は非常にクロスプラットフォームであり、ほぼすべてのオペレーティング システムに実装できます。

CGI メソッドが接続要求 (ユーザー要求) に遭遇すると、まず CGI サブプロセスを作成し、CGI プロセスをアクティブにしてから要求を処理し、処理後にサブプロセスを終了する必要があります。これはフォークして実行するパターンです。したがって、CGI を使用するサーバーには、接続要求と同じ数の CGI サブプロセスが存在することになり、サブプロセスの繰り返しロードが CGI パフォーマンス低下の主な原因となります。ユーザーリクエストの数が非常に多い場合、メモリやCPU時間などのシステムリソースが大量に占有され、パフォーマンスが低下します。

2. FastCGI

fast-cgi は cgi のアップグレード バージョンです。FastCGI は、常に実行できる長寿命 CGI のようなものです。アクティブ化されると、毎回フォークするのに時間がかかりません。 PHP は管理に PHP-FPM (FastCGI Process Manager)、つまり PHP FastCGI Process Manager の正式名を使用します。

Web サーバーの起動時に、FastCGI プロセス マネージャー (IIS ISAPI または Apache モジュール) をロードします。 FastCGI プロセス マネージャーは自身を初期化し、複数の CGI インタープリター プロセス (複数の php-cgi が表示されます) を開始し、Web サーバーからの接続を待ちます。

クライアント要求が Web サーバーに到達すると、FastCGI プロセス マネージャーが CGI インタープリターを選択して接続します。 Web サーバーは、CGI 環境変数と標準入力を FastCGI サブプロセス php-cgi に送信します。

FastCGI サブプロセスは処理を完了すると、同じ接続から標準出力とエラー情報を Web サーバーに返します。 FastCGI 子プロセスが接続を閉じると、リクエストが処理されます。次に、FastCGI 子プロセスは、(Web サーバーで実行されている) FastCGI プロセス マネージャーからの次の接続を待機して処理します。 CGI モードでは、php-cgi はこの時点で終了します。

上記の状況では、CGI が通常どれほど遅いか想像できるでしょう。 PHP へのすべての Web リクエストは、php.ini を再解析し、すべての拡張機能を再ロードし、すべてのデータ構造を再初期化する必要があります。 FastCGI では、これらすべてがプロセスの開始時に 1 回だけ行われます。さらに、永続的なデータベース接続が機能するという利点もあります。

3. APACHE2HANDLER

PHP は Apache モジュールです。Apache サーバーがシステムを起動すると、複数のプロセス コピーが事前に生成され、メモリ内に常駐します。リクエストが発生すると、これらのアイドル状態のサブプロセスがすぐに処理に使用されるため、サブプロセスの生成による遅延は発生しません。これらのサーバー コピーは、HTTP 要求の処理後すぐには終了せず、次の要求を待ってコンピューター内に留まります。クライアントのブラウザ要求に対する応答が速くなり、パフォーマンスが向上します。

4. CLI

cli は、php のコマンド ライン実行モードです。cli 側でのコマンドの実行は、非常に役立つ場合があります。以下にいくつかの概要を示します:

php バージョン情報の表示

eric:~ youngeric$ php -v
 
PHP 5.5.38 (cli) (built: Oct  1 2016 23:03:00) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

現在の php 拡張機能の表示

eric:~ youngeric$ php -m
 
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
......

php.ini 構成情報の表示 ( phpinfo( ) 関数の使用と同等)

eric:~ youngeric$ php -ini
 
phpinfo()
PHP Version => 5.5.38
 
System => Darwin eric.local 16.1.0 Darwin Kernel Version 16.1.0: Wed Oct 19 20:31:56 PDT 2016; root:xnu-3789.21.4~4/RELEASE_X86_64 x86_64
Build Date => Oct 1 2016 23:01:51
Configure Command => './configure' '--prefix=/usr/local/Cellar/php55/5.5.38_11' '--localstatedir=/usr/local/var' '--sysconfdir=/usr/local/etc/php/5.5' '--with-config-file-path=/usr/local/etc/php/5.5' '--with-config-file-scan-dir=/usr/local/etc/php/5.5/conf.d' '--mandir=/usr/local/Cellar/php55/5.5.38_11/share/man' '--enable-bcmath' '--enable-calendar' '--enable-dba' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-mbregex' '--enable-mbstring' '--enable-shmop' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-wddx' '--enable-zip' '--with-freetype-dir=/usr/local/opt/freetype' '--with-gd' '--with-gettext=/usr/local/opt/gettext' '--with-iconv-dir=/usr' '--with-icu-dir=/usr/local/opt/icu4c' '--with-jpeg-dir=/usr/local/opt/jpeg' '--with-kerberos=/usr' '--with-libedit' '--with-mhash' '--with-ndbm=/usr' '--with-png-dir=/usr/local/opt/libpng' '--with-xmlrpc' '--with-zlib=/usr' '--with-readline=/usr/local/opt/readline' '--without-gmp' '--without-snmp' '--with-libxml-dir=/usr/local/opt/libxml2' '--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc' '--with-unixODBC=/usr/local/opt/unixodbc' '--with-bz2=/usr' '--with-openssl=/usr/local/opt/openssl' '--enable-fpm' '--with-fpm-user=_www' '--with-fpm-group=_www' '--with-curl' '--with-xsl=/usr' '--with-ldap' '--with-ldap-sasl=/usr' '--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--disable-opcache' '--enable-pcntl' '--without-pear' '--enable-dtrace' '--disable-phpdbg' '--enable-zend-signals'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/etc/php/5.5
Loaded Configuration File => /usr/local/etc/php/5.5/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/5.5/conf.d
......

関数情報の表示

eric:~ youngeric$ php --rf date
 
Function [ <internal:date> function date ] {
 - Parameters [2] {
  Parameter #0 [ <required> $format ]
  Parameter #1 [ <optional> $timestamp ]
 }
}

クラス情報の表示

eric:~ youngeric$ php --rc pdo
 
Class [ <internal:PDO> class PDO ] {
 
 - Constants [89] {
  Constant [ integer PARAM_BOOL ] { 5 }
  Constant [ integer PARAM_NULL ] { 0 }
  Constant [ integer PARAM_INT ] { 1 }
  Constant [ integer PARAM_STR ] { 2 }
  Constant [ integer PARAM_LOB ] { 3 }
  Constant [ integer PARAM_STMT ] { 4 }
  Constant [ integer PARAM_INPUT_OUTPUT ] { 2147483648 }
 ......

php コードの検出

eric:~ youngeric$ php -l jiance.php
 
PHP Parse error: syntax error, unexpected end of file, expecting &#39;,&#39; or &#39;;&#39; in jiance.php on line 3
Errors parsing jiance.php

世界最高の言語である PHP には、サーバー機能も組み込まれています (ショックを受けましたか?)。

eric:Desktop youngeric$ php -S 127.0.0.1:8080
 
PHP 5.5.38 Development Server started at Thu Dec 22 09:44:20 2016
Listening on http://127.0.0.1:8080
Document root is /Users/youngeric/Desktop
Press Ctrl-C to quit.
[Thu Dec 22 09:44:29 2016] 127.0.0.1:52988 [404]: / - No such file or directory
[Thu Dec 22 09:44:29 2016] 127.0.0.1:52989 [404]: /favicon.ico - No such file or directory

推奨学習: PHP ビデオ チュートリアル

以上がPHP でよく使用される 4 つの実行メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。