Я новичок в PHP. Я знаю, что PHP запускает отдельный процесс для каждого пользователя / сеанса. Однако мне также нужен какой-то глобальный процесс, который может обновлять некоторую глобальную информацию (я получу такую информацию через REST API-интерфейсы веб-сайта) и кэшировать ее в памяти, чтобы код PHP мог просто получить оттуда глобальную информацию. Более того, эта глобальная информация должна обновляться примерно каждую минуту. Я, конечно, мог бы получить такую глобальную информацию для каждого сеанса, но это было бы неэффективно. Я бы предпочел, чтобы такая глобальная информация обновлялась отдельно в отдельном процессе.
Можно ли написать сценарий на основе cron на PHP и можно ли сохранить результаты в памяти, а не в файле?
Я бы использовал Redis для обмена глобальной информацией: redis.io
Конечно, это может быть написано на любом языке. И результат является в памяти более-менее. Я думаю, вам стоит немного почитать о базах данных и эффективности. Вы не будете более эффективны с общей памятью или чем-то подобным.
Поскольку у каждого процесса своя память, «в памяти», вероятно, не сильно поможет. Тогда вам нужен отдельный кеш в памяти, такой как memcache. Конечно, у вас также может быть постоянный рабочий PHP, с которым вы общаетесь через сокеты или что-то подобное, которое хранит вещи только в памяти. Какой лучший подход зависит от множества деталей…
@Stefan Redis является база данных.
@arkascha звучит так, как будто он хочет хранить и регулярно обновлять данные в памяти, которые должны использоваться несколькими процессами php. Некоторые могут быть кронами, другие управляются веб-сервером. Redis кажется подходящим. Если я не ошибаюсь.
@Stefan Любая база данных может это сделать. Я не имел в виду, что вы ошибались. Вы только что упомянули один из множества альтернатив.
Redis, memcached, временные файлы, база данных SQL, MongoDB, ElasticSearch, создание робота для написания поститов и прикрепления их к корпусу сервера. Все это решения этой проблемы. Выберите самый простой и следуйте ему. Кроме того, вероятно, есть еще множество способов решить эту проблему
@apokryfos ты прав.
Вам вообще нужен демон / служба - возможно, вы могли бы использовать слой кеширования? (Не то, чтобы кеширование было легким.)






Нечто подобное обычно делается с использованием базы данных в качестве «глобального процесса» и, возможно, сценария на основе cron в качестве исполнителя. Это зависит от того, откуда эта информация. Вам нужно будет рассказать нам больше.