Рубрики
Uncategorized

Краткое описание давних проблем cgi, быстрый cgi, PHP-fpm

Автор оригинала: David Wong.

Будь то php , язык программирования python или apache , сервер nginx является неотъемлемой темой для протокола CGI. Установка, развертывание будут часто видеть, то, что они делают, онлайн-ответов очень много! Сегодня через них проходит волна обобщений, чтобы основательно попрощаться с этой сложной ситуацией. Ссылка:

Когда клиент браузера заходит на веб-сайт по протоколу HTTP на веб-сервер, такой как apache, это понятно всем. Если веб-сервер не имеет возможности обрабатывать PHP-файлы, он запросит интерпретатор PHP( php-cgi.exe ) Или вместо файла PHP, такого как файл python, веб-сервер также запросит интерпретатор python. Поскольку переводчиков так много, не может быть протокола, определяющего их стандарты, иначе это будет беспорядок. Выходит протокол CGI Проще говоря apache/nginx Протокол, разработанный для взаимодействия с внутренними языками сценариев (php, python и т.д.).

Что такое php-cgi

В системе Windows после установки php под каталогом установки находятся три файла:

  • В системе Windows после установки php под каталогом установки находятся три файла: В командной строке выполняется файл PHP-скрипта.
  • php-cgi.exe Исполняемые файлы CGI, которые могут использоваться CGI или FastCGI при запуске PHP на веб-сервере (apache), можно понимать как интерпретатор PHP (также известный как официальный менеджер процессов FastCGI, что касается статьи, которая будет проанализирована позже, здесь как интерпретатор PHP).
  • php-win.exe Исполняемые файлы PHP, используемые для выполнения PHP-скриптов без использования окон командной строки (например, PHP-приложения, использующие графический интерфейс Windows).

Вышеперечисленные три файла не влияют друг на друга, поэтому я могу удалить два из них из своего локального теста.

Запустите PHP-файл в командной строке

F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts>
F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts> php F:\softwares\phpStudy\PHPTutorial\index.php
Running results of Hello World #php.exe
F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts>php-cgi F:\softwares\phpStudy\PHPTutorial\index.php
X-Powered-By: PHP/7.2.1#php-cgi.exe Running Results
Content-type: text/html; charset = UTF-8 # php-cgi.exe run results

Running results of Hello World #php-cgi.exe
F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts>php-win 
F: softwares phpStudy PHPTutorial index. php php-win.exe runs, and the result is blank

F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts>

Apache вызывает PHP тремя способами: модуль, cgi, FastCGI. Эти методы можно найти в Интернете. Вот в чем принцип.

  1. Модуль: Это уникальная поддержка PHP apache, nginx не является таким способом, благодаря этому Apache может напрямую обрабатывать PHP-скрипты, так как для многопроцессорной работы многопоточность зависит от того, как работает Apache. Участие: Введение и настройка трех режимов работы Apache
  2. CGI (Общий интерфейс шлюза): Когда у Apache есть PHP-скрипты для обработки, вызовите интерпретатор PHP через протокол CGI CGI (Общий интерфейс шлюза): Когда у Apache есть PHP-скрипты для обработки, вызовите интерпретатор PHP через протокол CGI И php-cgi.exe Может читать php.ini Файл конфигурации, как подпроцесс apache. Есть недостаток: у клиентских браузеров больше запросов, Apache создает больше дочерних процессов и каждый раз считывает их заново. php.ini Файл конфигурации.
  3. FastCGI-это протокол для решения задач CGI. Соглашение предусматривает, что php-cgi.exe Я больше не собираюсь быть твоим ребенком-апачом, я независим, так что можешь расслабиться! Я создаю одну службу, в которой указывается главный главный процесс, а затем включается несколько рабочих процессов. Мастер отвечает за php.ini И другие файлы конфигурации, а также получение запросов от apache, которые выделяются рабочему процессу для обработки. Это составляет apache Как клиент, Программа протокола FastCGI В качестве сервера. это Программа протокола FastCGI Это PHP-fpm. Это PHP-fpm. Протокол FastCGI Конкретная реализация.

Это протоколы, и FastCGI устраняет некоторые недостатки cgi.

Это протоколы, и FastCGI устраняет некоторые недостатки cgi. Это переводчик. Его также можно использовать как простой. cgi/FastCGI Менеджер. Например, как nginx сочетается с PHP в системе Windows? Linux передает php-fpm, но в Windows нет php-fpm, когда вы откроете диспетчер задач, вы обнаружите, что CGI/FastCGI (32 бита) Этот процесс, nginx, является обратным прокси-сервером для него.

location ~ \.php(.*)$  {
            Fastcgi_pass 127.0.0.1:9000; # Here the 9000 port is `php-cgi.exe`` monitored.
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }

Давайте посмотрим на это из командной строки. php-cgi.exe Помогите, он также может выполнить некоторые простые настройки.

F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts>php-cgi -h
Usage: php [-q] [-h] [-s] [-v] [-i] [-f ]
       php  [args...]
  -a               Run interactively
  -b | Bind Path for external FASTCGI Server mode
  -C               Do not chdir to the script's directory
  -c | Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f         Parse .  Implies `-q'
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -q               Quiet-mode.  Suppress HTTP Header output.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z         Load Zend extension .
  -T        Measure execution time of script repeated  times.

Что такое php-fpm?

PHP-fpm Вот он. Менеджер процессов FastCGI Его концепция не является двусмысленной! Он запускает порт прослушивания службы, проксирует его обратно через nginx и имеет собственный встроенный интерпретатор PHP. Однако его нельзя использовать в Windows. PHP-fpm

Для клиентских браузеров nginx/apache Это сервер. о программе PHP-fpm Для, apache/nginx Это клиент.

CGI и FastCGI-это протоколы, стандарты и протоколы между веб-серверами и языками фоновых сценариев. Php-cgi и PHP-fpm-это программы. Что касается того, является ли php-cgi интерпретатором или менеджером, в Интернете также можно кое-что сказать, и он также может прослушивать порты для обработки запросов от агентов веб-сервера. Так что это просто. Cgi/Менеджер процессов FastCGI Панель управления!

Неясно, какова связь между FastCGI и PHP-fpm. Введение в PHP-соединение и как атаковать PHP-FPM Какова связь между php-cgi и php-fpm? Введение и настройка трех рабочих режимов Apache Руководство по PHP: Установка на старых системах Windows Какова связь между php-cgi и php-fpm?

Оригинал: “https://developpaper.com/summary-of-long-standing-problems-cgi-fast-cgi-php-fpm/”