Мне трудно получить ответы на несколько очень простых вопросов PHP. Все видеоуроки, которые я смотрел, посвящены основам серверных сценариев с использованием PHP, но на самом деле мало что объясняет, как PHP работает под капотом.
Допустим, у нас есть 2 пользователя, подключающихся к одному и тому же серверу LAMP из разных уголков мира одновременно, и оба запрашивают Widget.php.
(a) Как Apache / PHP эффективно «копирует 2 экземпляра» сценария Widget.php и его зависимостей, так что 2 HTTP-запроса обрабатываются отдельно?
(б) Исходя из части (а) выше, как PHP разделяет запросы пользователей, чтобы разделить их? Если Widget.php использует сеансовую переменную с именем $_SESSION['cheese']
, как PHP хранит значение сыра отдельно для обоих пользователей?
(c) Является ли PHP $GLOBALS
пользовательским или прикладным? Это означает, что для глобальной переменной $GLOBALS['bread']
пользователи 1 и 2 совместно используют одну и ту же ссылку на нее, или PHP хранит их отдельно, как это было с переменной сеанса, указанной выше в (b)?
(d) В чем разница между переменной PHP $GLOBALS
и объектом, который реализует одноэлементный дизайн? Если приложение когда-либо имеет доступ только к 1 экземпляру синглтона, не является ли оно глобальным? Есть ли какие-то соображения относительно производительности, которые следует учитывать?