Правильно ли я понимаю, что каждый хит на сайте порождает отдельный процесс php?
Если это так, то означает ли это, что каждый раз также самостоятельно стартует сессия? Но тогда как она передается от страницы к странице? И как ее увидеть? В заголовках?
Вопрос возник в связи с тем, что везде примеры для обработок форм обходят этот момент, рассматривая обработку форм с точки зрения субъекта - наблюдателя (в смысле единоличного пользователя сайта). Но ведь на реальных сайтах в один и тот же момент времени могут находиться миллионы пользователей. Тогда как разделяются их данные, например, когда они заполняют формы? Чьими данными наполняется этот самый $_POST ?
Здесь важно понимать работу протокола http. Такого понятия как хит нет, есть понятие запрос/ заголовки запроса к серверу и ответ/ заголовки ответа от сервера. Есть возможность передачи состояния от запроса к запросу с помощью функционала сессий. Идентификатор сессии передается вместе с запросом на сервер в куках
все-таки, наверное, порождает процесс посетитель. Судя по определениям, загрузка/перезагрузка страницы - это хит. Если он загрузил страницы сайта в двух соседних вкладках - это 2 процесса? Но, к примеру, как в этом случае работают онлайн-консультанты? Как я заметил, они "узнают" пользователя и там, и там.
Если он загрузил страницы сайта в двух соседних вкладках - это 2 процесса?
Процесс есть только в момент формирования html кода ответа. Потом он завершается и любой другой запрос порождает новый процесс.
Онлайн консультанты и чаты часто работают не на одном php, а в совокупности с comet сервером. Так как для доставки сообщений требуется держать постоянно открытое соединение по вебсокету. https://habrahabr.ru/company/comet-server/blog/273...
Данные сессии хранятся в специальном файле на сервере. SESSION_ID этого файла обычно хранится в куке, реже каждый раз добавляется к URL.
Стартует сессия командой session_start(), то есть PHP проверяет валидность SESSION_ID и заполняет данными $_SESSION.
Заполнение форм к сессии не имеет отношения. Данные из форм передаются в get/post конкретного запроса.
<?php
//Retrieve name from query string and store to a local variable
$name = $_POST['name'];
echo "<h3> Hello $name </h3>";
?>
Вот если этот пример открывают одновременно 100 человек, предварительно введя свое имя в форме, то каждый из них получит после hello свое имя. Как это реализовано?