Подскажите как можно создать Глобальную переменную, в смысле чтоб к ней можно было обращаться из PHP скрипта, запущенного от разных клиентов?
Требуется чтоб при обращении к определенному php файлу, он в свою очередь создавал временные переменные, которые должны сохраняться некоторое время (например 5-10 минут), и эти переменные должны быть доступны при запросе данного файла от Разных клиентов.
После истечения времени от момента создания переменных, они должны удаляться, либо инициализироваться снова (уже другим значением) - при очередном запросе данного php
Т.е. при запросе, функция проверяет - не истёк ли период времени жизни переменных, если истек - то создаем снова и работаес дальше по скрипту, либо сразу работаес по скрипту - со старым значением в переменной.
Думал сделать на Сессиях, но при старте сессии - читается Определенный id сессии, откуда требуется читать Данные от пользователя, ранее записанные под его id.
if( !issets $GLOBALS['generalData']){
$GLOBALS['generalData']= 'initialization';
}
//Далее работа с данными из переменной $GLOBALS['generalData']
'
Или такое:
session_id($idClient); //задать id сессии текущего клиента, id получен из GET[]
session_start();
{Проверка и сбор данных клиента}
session_unset??? //как бы не удалять, а закончить работу с данной сессией.
session_id('generalData'); //задать новый (общий) id сессии
season_start();
Тут конечно нет проверки по времени, это потом сам реализую, добавлением метки времени и проверкой ее перед обращением к данным переменной (Массиву)
$GLOBALS является глобальной только для текущего скрипта. И про эту переменную надо вообще забыть, она нужна только для говнокода.
Сессии не предназначены для такого использования.
Вам уже сказали - стандартный ответ на этот вопрос - база данных
Данные размером до 4 кб можно хранить в куках с указанием срока истечения. Все что больше пихайте в базу данных или сохраняйте как локальный json-файл.
Не надо глобальных переменных.
Те данные, которые нужны разным клиентам - сохраняй в базу данных.
То что ты описываешь, похоже на то как работают кэши.
Ты можешь поднять Redis, делать к нему запрос.
Если данных по ключу нет - вычисляешь их как-то и кладёшь в Redis, указывая TTL 10 минут.
Аналогично ты можешь сделать и с любой другой, более привычной СУБД
https://www.php.net/manual/ru/intro.memcached.php
Будет хранить в памяти даные указанное время. Все процессы, да и приложеня, смогут добраться до этих данных.
Есть удобные методы для правильного изменения данных (чтобы лишнего не записать, нужное не затереть и т.п.)