Очень простой вопрос для вас. Я просто нашел два исполняемых файла php-cgi.exe
и php.exe
в папке bin на сервере WAMP на моем ноутбуке. Я изучаю PHP и не могу понять разницу. В чем разница между ними?В чем разница между php cli и php cgi?
ответ
PHP CLI это интерфейс командной строки для PHP (например, для создания автономных приложений)
PHP CGI является общий интерфейс шлюза для PHP (например, для веб-приложений)
и PHP - препроцессор Php Hypertext. Это действительно ответ? Я так не думаю – Trix
CLI для сценариев командной строки, CGI для веб-запросов
php-cgi
предназначенный для веб-серверов. Среди прочего он обрабатывает HTTP-заголовки для вас.
Версия CLI предназначена для запуска в командной строке (отсюда «интерфейс командной строки»). Это не обрабатывает заголовки или любые другие связанные с сервером вещи.
php-cli
предназначен для работы с PHP в командной строке. php-cgi
делает для вас дополнительные вещи, такие как заголовки HTTP и некоторые модификации безопасности.
Сказав это, рассмотрим возможность установки модуля FastCGI и использования PHP's FastCGI interface. Это должно запускать PHP заметно быстрее, чем php-cgi. Я считаю, что стандартным модулем Apache FastCGI является mod_fcgid
.
От http://www.php-cli.com/php-cli-cgi.shtml
Это наиболее важные различия между CLI и CGI:
- В отличие от CGI SAPI, CLI не пишет ни одного заголовка к выходу по умолчанию
- Есть некоторые php.ini директивы, которые переопределены CLI SAPI, поскольку они не имеют смысла в средах оболочки:
- html_errors: CLI по умолчанию FALSE
- implicit_flush: CLI по умолчанию имеет значение ИСТИНА
- max_execution_time: CLI по умолчанию 0 (бессрочного)
- register_argc_argv: CLI по умолчанию имеет значение ИСТИНА
- У вас могут быть аргументы командной строки с вашим скриптом! Переменная «$ argc» предоставляет вам ряд аргументов, переданных в приложение . И массив «$ argv» дает вам массив фактических аргументов
- В оболочке определены 3 новые константы: STDIN, STDOUT, STDERR. Все они являются обработчиками файлов для соответствующих устройств оболочки. Например, STDIN является обработчиком для fopen ('php: // stdin', 'r'). Итак, вы можете прочитать строку из STDIN, например : $ strLine = trim (fgets (STDIN)) ;. STDIN уже определен для вы с помощью PHP CLI!
- PHP CLI не меняет текущий каталог на каталог исполняемого сценария .Текущим каталогом для скрипта будет каталог , где ваш тип команды PHP CLI.
- Для PHP CLI существует множество ПОЛЕЗНЫХ опций. Который будет , позволит вам получить ценную информацию о вашей настройке php, вашем php-скрипте или запустить его в разных режимах.
- В PHP 5 произошли некоторые изменения в именах файлов CLI и CGI. В PHP 5, версия CGI была переименована в php-cgi.exe (ранее php.exe) и версия CLI теперь находится в основном каталоге (ранее cli/php.exe).
- В PHP 5 также был введен новый режим: php-win.exe. Это , равный версии CLI, за исключением того, что php-win не выводит ничего и, следовательно, не предоставляет консоли (на экране не появляется «dos box»). Такое поведение похоже на PHP GTK.
Привет, вы знаете, есть ли у него некоторый тайм-аут? Я имею в виду, если нужно запустить скрипт, который слишком долго запускается. Это хороший вариант для запуска в CLI? –
Да, конечно. В CLI max_execution_time: по умолчанию 0 (без ограничений). –
Это может дать вам более глубокое понимание их отличия:
CGI: (общий интерфейс шлюза) Это спецификация «протокол» для передачи информации между веб-сервером и программой CGI ,
Программа CGI - это любая программа, предназначенная для приема и возврата данных, соответствующих спецификации CGI.
В принципе, это способ запуска сценария на стороне сервера (PHP, Perl, Python, ...) при приеме HTTP-запроса.
CGI очень медленный по сравнению с другими альтернативами.
FastCGI: это лучше CGI.
Быстрый CGI - это другой подход с гораздо более быстрыми результатами.
Это CGI с несколькими расширениями.
Реализация FastCGI больше не доступна в пользу PHP-FPM.
PHP-FPM: (FastCGI Process Manager), это лучше реализация FastCGI, чем старый FastCGI.
Он работает как автономный сервер FastCGI.
В общем, это интерфейс PHP для веб-серверов (Apache, Nginx ..), позволяющий Web-серверу взаимодействовать с PHP.
В отличие от PHP-CLI, который является интерфейсом командной строки для PHP, позволяет пользователям взаимодействовать с PHP через терминал.
mod_php: модуль Apache для запуска PHP.
Он выполняет PHP-скрипты внутри веб-сервера непосредственно как часть веб-сервера без связи с программой CGI.
mod_SuPHP: похож на mod_php, но может изменить пользователя/группы, что процесс проходит под.
В основном он адресует некоторые проблемы mod_php, связанные с разрешениями.
- 1. В чем разница между скриптом mod_php и cgi php?
- 2. В чем разница между. = И + = в PHP?
- 3. В чем разница между `/` и `\` в php
- 4. В чем разница между 'и "в PHP
- 5. В чем разница между PHP и включать?
- 6. Php: В чем разница между | и || Оператор
- 7. В чем разница между PHP и ASP?
- 8. В чем разница между PHP и Java?
- 9. В чем разница между php 4 и php 5?
- 10. В чем разница между интерпретатором PHP и обработчиком PHP?
- 11. В чем разница между phpinfo(); и php -i?
- 12. Разница между «:» и «.» В PHP?
- 13. разница между cgi и webservice
- 14. Разница между /../*.php и * .php
- 15. В чем разница между этим в php?
- 16. В чем разница между PHP-клиентами solr?
- 17. В чем разница между закрытием между PHP 5.3 и 5.4?
- 18. В чем разница между этими переменными PHP?
- 19. В чем разница между методами хэширования php?
- 20. В чем разница между этими переменными PHP
- 21. В чем разница между выражениями PHP if?
- 22. В чем разница между perl как языком и скриптами CGI?
- 23. В чем разница между sendmail через CGI и Perl?
- 24. разница между CLR и CLI
- 25. Разница между | и || в PHP
- 26. Разница между # и // в php?
- 27. разница между ./ и ../ в PHP
- 28. (PHP PDO) В чем разница?
- 29. Разница между php и sql?
- 30. В чем разница между Run и EMULATE в CLI Cordova?
Возможный дубликат [Разница между выполнением php из командной строки и с Http-стороны] (http://stackoverflow.com/questions/3016281/difference-between-executing-php-from-the-commandline-and-from -the-http-side) – mario
@mario как вы находите дубликат? Я не мог найти ни одного дубликата. – user1208865