Tenho vários trabalhadores PHP e preciso definir o atraso entre a inicialização de cada um deles. Como lidar com isso?
Iniciar 1 processo / Aguardar 20 segundos / Iniciar 2º processo / Aguardar 20 segundos ... Mantenha 50 processos ativos ao mesmo tempo.
[program:get_comments]
directory=/var/www/
command=/usr/bin/php post_request.php
user=root
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
numprocs=50
stdout_logfile=/var/www/worker.log
stderr_logfile=/var/www/worker.error
Responder1
Eu tive um problema semelhante em que iniciar 64 processos python rq-worker usando supervisorctl gerava alertas de CPU e RAM a cada reinicialização. O que fiz foi o seguinte:
command=/bin/bash -c "sleep %(process_num)02d && virtualenv/bin/python3 manage.py rqworker --name %(program_name)s_my-rq-worker_%(process_num)02d default low"
Basicamente, antes de executar o comando python, durmo por N segundos, onde N é o número do processo, o que basicamente significa que o supervisor iniciará um processo rq-worker a cada segundo.
No seu caso, o seguinte deve funcionar:
command=/bin/bash -c "sleep $((%(process_num)01d + 20)) && /usr/bin/php post_request.php"
Observe que o primeiro processo também começará após 20 segundos.