При использовании очередей сообщений Вам может понадобится запускать PHP процессы, которые должны работать постоянно. Для этого есть несколько подходов:
Можно использовать cron для запуска и перезапуска процессов:
crontab -e
Добавляем туда:
* * * * * if [ $(ps aux | grep 'worker1' | grep -v grep | wc -l | tr -s "n") -lt 5 ]; then /usr/bin/php /var/www/worker1.php >> /var/log/php.worker1.log; fi
При добавлении в cron этой инструкции она будет запускать скрипт worker1.php
до тех пор, пока не будет работать 5 таких скриптов одновременно.
Если нужно запустить только один процесс:
* * * * * if [ $(ps aux | grep 'worker1' | grep -v grep | wc -l | tr -s "n") -lt 1 ]; then /usr/bin/php /var/www/worker1.php >> /var/log/php.worker1.log; fi
Каждую минуту cron будет проверять наличие процессов в нужном количестве и запускать новые если понадобится. Быстрое решение, но следующее лучше и удобнее.
Supervisord позволяет организовать работу фоновых PHP процессов очень удобно. Установка на Debian:
apt-get install supervisor
В файле конфигурации (nano /etc/supervisor/supervisord.conf), в самом низу добавляем настройки для нужного воркера:
[program:worker] command=/usr/bin/php /var/www/worker.php numprocs=1 directory=/var/www/worker stdout_logfile=/var/log/worker.log autostart=true autorestart=true user=www-data stopsignal=KILL
Запустит 1 процесс указанного скрипта
Для запуска нескольких копий одного процесса необходимо также указать параметр process_name для определения уникального имени процесса
[program:worker] command=/usr/bin/php /var/www/worker.php process_name=%(program_name)s_%(process_num)02d numprocs=10 directory=/var/www/worker stdout_logfile=/var/log/worker.log autostart=true autorestart=true user=www-data stopsignal=KILL
Запустит 10 одновременных процессов указанного скрипта
После этого достаточно перезапустить supervisor и worker.php сразу запустится:
/etc/init.d/supervisor stop /etc/init.d/supervisor start
Supervisor сам будет следить за процессами, запускать их в случае падения, а также после перезагрузки системы. Вы можете запускать несколько копий процессов, указывая их количество в параметре numprocs.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…