Как я могу запустить глобальный процесс в PHP?

Я новичок в PHP. Я знаю, что PHP запускает отдельный процесс для каждого пользователя / сеанса. Однако мне также нужен какой-то глобальный процесс, который может обновлять некоторую глобальную информацию (я получу такую ​​информацию через REST API-интерфейсы веб-сайта) и кэшировать ее в памяти, чтобы код PHP мог просто получить оттуда глобальную информацию. Более того, эта глобальная информация должна обновляться примерно каждую минуту. Я, конечно, мог бы получить такую ​​глобальную информацию для каждого сеанса, но это было бы неэффективно. Я бы предпочел, чтобы такая глобальная информация обновлялась отдельно в отдельном процессе.

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

arkascha 21.05.2018 10:30

Можно ли написать сценарий на основе cron на PHP и можно ли сохранить результаты в памяти, а не в файле?

AlexScalar 21.05.2018 10:32

Я бы использовал Redis для обмена глобальной информацией: redis.io

Stefan 21.05.2018 10:33

Конечно, это может быть написано на любом языке. И результат является в памяти более-менее. Я думаю, вам стоит немного почитать о базах данных и эффективности. Вы не будете более эффективны с общей памятью или чем-то подобным.

arkascha 21.05.2018 10:33

Поскольку у каждого процесса своя память, «в памяти», вероятно, не сильно поможет. Тогда вам нужен отдельный кеш в памяти, такой как memcache. Конечно, у вас также может быть постоянный рабочий PHP, с которым вы общаетесь через сокеты или что-то подобное, которое хранит вещи только в памяти. Какой лучший подход зависит от множества деталей…

deceze 21.05.2018 10:33

@Stefan Redis является база данных.

arkascha 21.05.2018 10:34

@arkascha звучит так, как будто он хочет хранить и регулярно обновлять данные в памяти, которые должны использоваться несколькими процессами php. Некоторые могут быть кронами, другие управляются веб-сервером. Redis кажется подходящим. Если я не ошибаюсь.

Stefan 21.05.2018 10:39

@Stefan Любая база данных может это сделать. Я не имел в виду, что вы ошибались. Вы только что упомянули один из множества альтернатив.

arkascha 21.05.2018 10:40

Redis, memcached, временные файлы, база данных SQL, MongoDB, ElasticSearch, создание робота для написания поститов и прикрепления их к корпусу сервера. Все это решения этой проблемы. Выберите самый простой и следуйте ему. Кроме того, вероятно, есть еще множество способов решить эту проблему

apokryfos 21.05.2018 10:41

@apokryfos ты прав.

Stefan 21.05.2018 10:44

Вам вообще нужен демон / служба - возможно, вы могли бы использовать слой кеширования? (Не то, чтобы кеширование было легким.)

Progrock 21.05.2018 13:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
11
49
0

Другие вопросы по теме