Возможно ли как-то постоянно хранить переменные в PHP-скрипте без базы данных?

444
21 декабря 2016, 04:38

Есть скрипт небольшого сервера, который распределяет данные между клиентами. Скрипт работает с параметрами set_time_limit(0); и ignore_user_abort(true);. В этом скрипте есть массив $Clients, структура - Array('ClientName'=>'...', 'ClientData'=>'...'). Проблема в том, что при обращении к скрипту каждого клиента, массив создаётся заново, а должен быть наполнен информацией о других клиентах, которые обращались к скрипту. Запросы к скрипту идут постоянно AJAX-ом от каждого авторизовавшегося клиента с некоторым интервалом (от 2 до 4 секунд) и, соответственно, информация в массиве должна обновляться.

Учитывая объём, количество и частоту сообщений, использовать базу данных крайне не эффективно, так как важна скорость работы, тем более база и так нагружена другим функционалом. В связи с этим прошу совета, как можно хранить в скрипте постоянный массив(ы), который бы не пересоздавался при каждом клиентском обращении?

Answer 1

Можно использовать APC, можно скидывать в файл с теми же json_encode/json_decode (по идее, при частых чтении-перезаписи он всё равно будет браться из кеша файловой системы), можно вообще посмотреть в сторону, например, Node.JS вместо PHP.

Answer 2

Если у вас основная информация о клиентах находится в базе, чтобы не придумывать дополнительный велосипед, можете попробовать хранить информацию о логах клиентов в таблице с типом MEMORY. В отличие от обычных таблиц, данные хранятся не на диске, а в оперативной памяти, и доступ к ним (чтение/запись) осуществляется очень быстро. По сути вы работаете с оперативкой. Это самое быстрое решение.

Другой вариант, это, как писали выше, использовать инструменты для кеширования - APC, memcached. Но они также, как и MEMORY, работают с оперативкой.

READ ALSO
В каком файле находится заголовок “Home” в Wordpress?

В каком файле находится заголовок “Home” в Wordpress?

Здравствуйте, У меня такая проблемаСайт на русском но путь в меню показывается так: Home/текст/текст

517
webserver на osx ошибки доступа

webserver на osx ошибки доступа

Всем приветСтолкнулся с следующей проблемой, после обновления ОС на макбуке вебсервер (изначально MAMP) при работе перестал отображать ошибки,...

419
Опциональный параметр в роуте

Опциональный параметр в роуте

Пробую сделать мультиязычный сайт на Laravel 53

505
преобразовать конвертировать x-ms-bmp в формат подходящий для imagecreatefromХХХ

преобразовать конвертировать x-ms-bmp в формат подходящий для imagecreatefromХХХ

Нужно сдедать ресайз image/x-ms-bmp файлаНо функции imagecreatefrombmp нет

481