Мне нужна помощь в понимании внутренней работы PHP.
Помните, в старые времена мы писали процедуры TSR (Завершить и оставаться резидентными) (эпоха до Windows)? Как только эта программа будет выполнена, она останется в памяти и может быть повторно выполнена с помощью некоторой горячей клавиши (комбинация клавиш alt или ctrl).
Я хочу использовать аналогичную концепцию в веб-сервере / приложениях. Скажем, у меня есть common_functions.php, который состоит из общих функций (таких как Generate_City_Combo (), Check_Permission () или Generate_User_Permission_list () или аналогичных) для всех веб-приложений, работающих на этом сервере apache / php.
Во всех php-файлах модулей или приложений я могу написать:
require_once (common_functions.php);
, который будет включать этот общий файл во все модули и приложения и прекрасно работает.
Мой вопрос: как php справляется с этим внутренне?
Скажи, что у меня есть:
Два приложения AppOne и AppTwo.
В AppOne есть две опции меню: AppOne_Menu_PQR и AppOne_Menu_XYZ
AppTwo имеет две опции меню: AppTwo_Menu_ABC и APPTwo_Menu_DEF
Все эти четыре пункта меню вызывают функции {например, Generate_City_Combo () или Check_Permission () или Generate_User_Permission_list ()} из common_functions.php
Теперь рассмотрим следующие сценарии:
A) Пользователь XXX входит в систему и нажимает AppOne_Menu_PQR со своей персональной панели инструментов, а затем выполняет все экраны и инструкции. Это серия запросов из 8-10 страниц (экранов), и она является интерактивной. После того, как это закончится, пользователь XXX нажимает AppTwo_Menu_DEF со своей персональной панели инструментов, и снова, как и ранее, он / она выполняет все экраны и инструкции (около 8-10 страниц / экранов). Затем пользователь XXX выходит из системы.
B) Пользователь XXX входит в систему и выполняет все, что упомянуто в сценарии A. В то же время пользователь YYY также входит в систему (с некоторого другого клиентского компьютера) и выполняет аналогичные действия, упомянутые в сценарии A.
Для сценария A это тот же сеанс. Для сценария B есть два разных сеанса.
Предположим, что все опции меню вызывают Generate_User_Permission_list () и Generate_Footer () или многие опции меню вызывают Generate_City_Combo ().
Так сколько раз PHP будет выполнять / включать common_functions.php за запрос страницы? за сеанс? или за запуск / выключение PHP? Насколько я понимаю, common_functions.php будет выполняться один раз КАЖДЫЙ запрос страницы / цикл / загрузка / экран, верно? В основном один раз для каждого взаимодействия.
Помните, что такие функции, как Generate_City_Combo () или Generate_Footer (), выдают одинаковые выходные данные или делают одно и то же независимо от того, кто или когда звонит.
Я бы хотел ограничить это одним разом при запуске и завершении работы приложения.
Это всего лишь примеры. Моя настоящая проблема намного сложнее и сложнее. В моих приложениях я хотел бы вызывать процедуры Application_Startup () только один раз, что создаст идеальную среду (такую как все структуры поиска и справочные данные, данные только для чтения, матрица безопасности, опции меню, контекстно-зависимая логика бизнес-выполнения и т. Д. .). После этого все запросы, поступающие на сервер, не должны тратить время и ресурсы на создание среды, но могут мгновенно ссылаться на «уже созданную среду».
Это что-то выполнимое в PHP? Как? Не могли бы вы указать мне где-нибудь или несколько книг, которые объясняют внутреннюю работу PHP?
Заранее спасибо.