Можно ли разделить объект между HTTP-запросами на стороне сервера (PHP, Symfony)? - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу повысить производительность веб-службы, которая должна создавать объект без сохранения состояния, но очень большой (с точки зрения памяти) объект.Это занимает довольно много времени - 0,3 с.Замена конструктора загрузкой сериализованного объекта сократила время до 0,1 с.Есть ли способ сохранить такой объект в памяти http-сервера (PHP, Symfony 4) и использовать его в разных http-запросах?

1 Ответ

0 голосов
/ 21 ноября 2018

Прежде всего: обычно это делается с хранилищем значений ключей, таких как Redis или Memcache.Но это не избавляет от времени, которое требуется для десериализации, что, вероятно, является узким местом здесь.

Это зависит от ваших настроек.Обычный «веб-сервер отвечает на запрос и загружает PHP через mod_php, CGI или FPM» не может этого сделать.HTTP не имеет состояния, а процессы PHP изолированы друг от друга.Если вы запускаете свой собственный сервер напрямую с PHP с чем-то вроде ReactPHP , вы можете делиться памятью, потому что ваше приложение всегда будет «в рабочем состоянии», что очень похоже на процесс на Java-сервере.Но это меняет всю парадигму программирования, так как внезапно вам придется позаботиться об утечках памяти, многопоточности и прочем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...