PHP: различия между версиями

7 байт убрано ,  09:05, 18 октября 2022
Изменена структура
(Раздел Как работает PHP)
(Изменена структура)
Строка 27: Строка 27:
* Facebook (первые версии)
* Facebook (первые версии)
* Вконтакте (первые версии)
* Вконтакте (первые версии)
* Aliexpress
* Taobao
* YouTube (самая первая версия, почти сразу был переписан на phyton)
* YouTube (самая первая версия, почти сразу был переписан на phyton)
* New York Post
* Aliexpress, Taobao
* CNN
* New York Post, CNN, BBC
* TED
* TED, Spotify, Yahoo, Flickr, Vimeo
* BBC
* Spotify
* Yahoo
* Flickr
* Vimeo
* ну и конечно же Wikipedia (движок MediaWiki)
* ну и конечно же Wikipedia (движок MediaWiki)
== Как работает PHP ==
PHP может работать по различным сценариям и схемам, разберем здесь типовую.
# Пользователь хочет посмотреть страницу <nowiki>https://izi.wiki/index.php</nowiki>.
# Запрос от браузера пользователя передается на сервер по HTTP протоколу (та самая аббревиатура из ссылок)
# На сервере установлена специальная программа "веб-сервер" (примеры Nginx, Apache). Она умеет обрабатывать HTTP запросы.
# Веб-сервер разбирает запрос и по внутренним правилам принимает решение: вернуть ошибку, перенаправить на другой адрес, вернуть пользователю файл или запустить PHP приложение.
# Если требуется запустить приложение, веб-сервер передает данные запроса пользователя в другую программу: PHP-интерпретатор.
# Здесь происходит сложная магия. PHP-интерпретатор проводит лексический и синтаксический анализ php файлов на сервере, генерирует промежуточный байт-код (opcodes - operation codes) и запускает виртуальную машину Zend Engine. В этом не нужно разбираться новичку.
# Итог: PHP программа записанная в php файле выполняется. Если требуется, в процессе выполнения она может обращаться к базе данных и другим сторонним приложениям.
# Результат выполнения в виде набора заголовков и текста ответа PHP-интерпретатор возвращает веб-серверу.
# Веб-сервер из полученных от PHP данных формирует корректный ответ по HTTP протоколу и возвращает пользователю в браузер. В большинстве случаев результат выполнения PHP программы - это HTML страница.
# Браузер обрабатывает ответ и отображает данные пользователю на экране.
== Проблемные места ==
* PHP — узконаправленный язык, главное достоинство влечет и недостатки. Плохо подходит для других задач кроме написания веб-приложений. Если вы знаете хорошо только PHP, вам придется работать только веб-разработчиком.
* Синтаксис языка (набор правил написания) скопирован из различных языков программирования (C, Java, Perl), это вызывает много споров и критики.
* Язык прост для новичков, так как не ограничивает их в написании некачественного, низкопроизводительного и небезопасного кода.
* Плохо подходит для сложных корпоративных и финансовых решений, где ущерб от сбоя или ошибок слишком высок.


== Советы новичкам ==
== Советы новичкам ==
Строка 62: Строка 76:
* При загрузке файлов на сервер от сторонних пользователей, как минимум проверяйте расширение файла на допустимые. А лучше загружайте файлы в отдельную папку с установленными ограничениями на возможность запуска любых скриптов и программ.
* При загрузке файлов на сервер от сторонних пользователей, как минимум проверяйте расширение файла на допустимые. А лучше загружайте файлы в отдельную папку с установленными ограничениями на возможность запуска любых скриптов и программ.
* Не храните файлы с конфиденциальной информацией в публично доступных папках вашего проекта и не загружайте их в репозитории.
* Не храните файлы с конфиденциальной информацией в публично доступных папках вашего проекта и не загружайте их в репозитории.
== Как работает PHP ==
PHP может работать по различным сценариям и схемам, разберем здесь типовую.
# Пользователь хочет посмотреть страницу <nowiki>https://izi.wiki/index.php</nowiki>.
# Запрос от браузера пользователя передается на сервер по HTTP протоколу (та самая аббревиатура из ссылок)
# На сервере установлена специальная программа "веб-сервер" (примеры Nginx, Apache). Она умеет обрабатывать HTTP запросы.
# Веб-сервер разбирает запрос и по внутренним правилам принимает решение: вернуть ошибку, перенаправить на другой адрес, вернуть пользователю файл или запустить PHP приложение.
# Если требуется запустить приложение, веб-сервер передает данные запроса пользователя в другую программу: PHP-интерпретатор.
# Здесь происходит сложная магия. PHP-интерпретатор проводит лексический и синтаксический анализ php файлов на сервере, генерирует промежуточный байт-код (opcodes - operation codes) и запускает виртуальную машину Zend Engine. В этом не нужно разбираться новичку.
# Итог: PHP программа записанная в php файле выполняется. Если требуется, в процессе выполнения она может обращаться к базе данных и другим сторонним приложениям.
# Результат выполнения в виде набора заголовков и текста ответа PHP-интерпретатор возвращает веб-серверу.
# Веб-сервер из полученных от PHP данных формирует корректный ответ по HTTP протоколу и возвращает пользователю в браузер. В большинстве случаев результат выполнения PHP программы - это HTML страница.
# Браузер обрабатывает ответ и отображает данные пользователю на экране.
== Проблемные места ==
* PHP — узконаправленный язык, главное достоинство влечет и недостатки. Плохо подходит для других задач кроме написания веб-приложений. Если вы знаете хорошо только PHP, вам придется работать только веб-разработчиком.
* Синтаксис языка (набор правил написания) скопирован из различных языков программирования (C, Java, Perl), это вызывает много споров и критики.
* Язык прост для новичков, так как не ограничивает их в написании некачественного, низкопроизводительного и небезопасного кода.
* Плохо подходит для сложных корпоративных и финансовых решений, где ущерб от сбоя или ошибок слишком высок.


== Шпаргалки ==
== Шпаргалки ==
Анонимный участник