Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или FastCGI ),CGI-программы кратко

Лекция



Привет, Вы узнаете о том , что такое php fastcgi, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое php fastcgi, mod_php, php как модуль apache, cgi-программы , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .

Общая схема взаимодействия посетителя с динамическим веб-сайтом

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

Основные различия между сборками.

Безопасность:

  • mod_php :
    в .htaccess будут работать директивы php_value, разрешены (точнее необходимы) права 777 (что крайне небезопасно), папки и файлы создаются не от имени пользователя, а от имени apache (в этом заключается один из недостатков: удалить такие файлы и папки без помощи администраторов Вы просто не сможете). При таком варианте будет работать 95% wap скриптов без предварительной настройки.
  • PHP FastCGI:
    в .htaccess запрещены директивы php_value (появится ошибка 500), права 777 недопустимы (вопреки заблуждениям, стоит отметить, что для записи в папку более чем достаточно прав 755, а файлам 644, или в крайнем случае, 666), файлы и папки, а также исполнение скриптов происходит от имени пользователя. При данной сборке бесплатные скрипты без предварительной настройки работать откажутся (появится ошибка 500).

Быстродействие:

  • mod_php:
    запускается веб-сервером при каждом новом запросе. На запуск приложения уходит иногда значительная часть времени, зачастую запуск занимает больше времени, чем выполняемая им далее полезная работа. Также можно отметить, что ошибки в скриптах могут привести к неработоспособности всего web-сервера.
  • PHP FastCGI:
    может быть реализовано в виде демона, т.е. оно само может являться сервером. FastCGI-приложение запущено всегда, поэтому время на запуск не тратится, ему достаточно только выполнять полезную работу. Ошибки в скриптах не приводят к неработаспособности всего сервера.

Важно заметить, что при 300-500 соединений ощутимой разницы для нагрузки на сервер не будет, будь то fcgi или mod_php. Но при значении 1000 соединений значительно будет преобладать FastCGI.

Подведем результаты сравнения php FastCGI и php модуль Apache (mod_php), выделив из всего выше сказанного достоинства и недостатки:

Вариант 1 PHP, как модуль Apache

В данном случае для работы PHP используется модуль веб-сервера apache mod_php.

Достоинства

  • Самая высокая скорость работы скриптов, по сравнению с другими методами (на больших количествах запросов).
  • Простота работы, сервер сам обрабатывает скрипты.
  • Общий конфигурационный файл для всех скриптов (php.ini).
  • Возможность задания переменных конфигурации PHP в конфигурационном файле web-сервера или средствами файла .htaccess

Недостатки

  • Все скрипты запускаются с правами с которым работает web-сервер, тем самым если есть необходимость записи в какую либо директорию – права доступа необходимо дать на нее всем, т.е. Об этом говорит сайт https://intellect.icu . низкая безопасность.
  • В случае запуска сторонних приложений скриптами (например, почтовая рассылка), нет возможности идентифицировать пользователя, который запустил процесс.
  • Излишняя нагрузка на web-сервер. Apache, занятый обработкой скриптов, может медленно отдавать другие статические данные.
  • Ошибки в скриптах могут привести к неработоспособности всего web-сервера.

Рисунок ниже схематично демонстрирует модульную архитектуру сервера Apache.

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

Модульная архитектура сервера Apache

PHP, как модуль сервера Apache, следовательно, в данном случае PHP и Apache можно рассматривать как единое целое, грубо говоря, одно многофункциональное приложение, так как PHP будет как бы встроен в архитектуру Apache, каждый модуль Apache при выполнении своих функций создает поток, а PHP будет лишь одни из потоков сервера Apache.

Но обратите внимание на то, что PHP в данном в случае можно лишь условно назвать встроенным в Apache, естественно, он будет модулем Apache, но их взаимодействие будет происходит при помощи специального программного кода, который является связующим звеном между средой PHP и сервером Apache, этот код в Apache оформлен в виде отдельного модуля.

Особенность установки Apache + PHP на Windows заключается в модуле MPM, который появился тогда, когда была разработана версия Apache для операционных систем семейства Windows. Этот модуль реализует мультипроцессорные модели и управляет взаимодействием ядра сервера с операционной системой и другими модулями. Модуль MPM имеет две модели: Worker и Prefork. Первая модель thread safe, вторая модель non-threaded, а как вы помните мы скачивали PHP версии Thread Safe.

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

Модули Apache mod_cgi / mod_cgid отвечают за обработку сценариев CGI. для рабочего и многопоточного MPM использует модуль cgi daemon «mod_cgid».

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

phpinfo() при таком режиме работы выдаст эту информацию

Вариант 2 PHP, как FastCGI

При этом используется модуль Apache mod_fastcgi, скрипты передаются его средствами на вход интерпретатора PHP.

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

Достоинства

  • Все скрипты выполняются с правами пользователя – владельца www-домена.
  • Возможность индивидуальной настройки PHP для каждого пользователя.
  • Меньший расход оперативной памяти по сравнению с модулем apache.
  • Ошибки в скриптах не приводят к падению веб-сервера в отличие от режима php как модуль apache .
  • За счет кэширования некоторых промежуточных данных скрипт не интерпретируется каждый раз при выполнении и достигается более высокая скорость по сравнению с PHP как CGI.

Недостатки

  • Лишний процесс пользователя (php-cgi) находится в памяти после первого обращения к процессу.

Таким образом, использование FastCGI является более безопасным, как с точки зрения прав доступа, так и с точки зрения наличия ошибок в работе посторонних скриптов, и более экономичным и быстрым способом работы PHP-скриптов. mod_php, в свою очередь, имеет некоторое увеличение быстродействия при большой (в тысячи соединений) нагрузке на сайт.

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

phpinfo() выдаст эту информацию

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

Преимущества и недостатки PHP FastCGI и mod_php ( php как модуль apache или  FastCGI ),CGI-программы

Что такое FastCGI

В отличие от CGI, FastCGI использует постоянно запущенные процессы для обработки множества запросов.

cgi-программы взаимодействуют с сервером через STDIN и STDOUT запущенного процесса.

FastCGI-процессы используют для связи с сервером Unix Domain Sockets или TCP/IP . Это дает следующее преимущество над обычными CGI-программами: FastCGI-программы могут быть запущены не только на этом же сервере, но и где угодно в сети. Также возможна обработка запросов несколькими FastCGI-процессами, работающими параллельно. Можно использовать несколько FastCGI-серверов, распределяя нагрузку между ними с помощью nginx или lighttpd.

После установления соединения FastCGI-процесса с web-сервером, между ними начинается обмен данными с использованием простого протокола, решающего две задачи: организация двунаправленного обмена в рамках одного соединения (для эмуляции STDIN, STDOUT, STDERR) и организация нескольких независимых FastCGI-сессий в рамках одного соединения.

Все передаваемые данные оборачиваются в FastCGI-записи — единицу данных протокола. FastCGI-записи служат для организации двунаправленного обмена и мультиплексирования нескольких сессий в рамках одного соединения.

FastCGI-запись состоит из заголовка фиксированной длины, следующего за ним содержимого и выравнивающих данных переменной длины. Каждая запись содержит 7 элементов.

В заключение, эта статья об php fastcgi подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое php fastcgi, mod_php, php как модуль apache, cgi-программы и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Из статьи мы узнали кратко, но содержательно про php fastcgi
создано: 2016-03-01
обновлено: 2021-03-13
132602



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)