Laravel постоянно запускает процесс на сервере Forge - PullRequest
0 голосов
/ 20 мая 2019

В предыдущем приложении, встроенном в CodeIgniter, я поставил на сервер скрипт, который выглядит следующим образом:

#!/bin/sh
while true
do
        php /var/www/html/index.php nameOfController nameOfScript
        sleep 1
done

А затем я запускаю его, используя nohup scriptname.

Мне было интересно, как вы делаете это для приложения Laravel.Он будет размещен на DigitalOcean и развернут через Forge, но я не думаю, что это будет иметь какое-либо значение.

Будет ли сценарий таким же для Laravel?Поскольку я еще не в производстве, мне было интересно, есть ли у кого-нибудь опыт установки такого скрипта.

Обновление

Причина, по которой я хотел бы запуститьтак происходит потому, что это скрипт, который торгует на криптообменниках.Иногда (из-за низкого качества API ...) сценарий занимает 1 секунду, но иногда это занимает 15 секунд.Если я использую cronjob, скажем, каждую 1 секунду, а сценарий все еще выполняется через 1 секунду, задание cron позволит ему запускаться снова без его завершения (что крайне важно для приложения).Поэтому я бы хотел, чтобы скрипт снова и снова запускал одну и ту же функцию, но не через заданный интервал времени.

1 Ответ

0 голосов
/ 21 мая 2019

Если вы используете Swoole , интегрированный с Laravel в кузнице, вы можете выполнить Миллисекундное задание хрон .

Если вы не используете Swoole, вы можетепоместите программу в ваш файл forge supervisord.conf, например, так:

[program:schedule]
command = bash %(ENV_APP_DIR)s/schedule.sh
stdout_logfile = /dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile = /dev/stderr
stderr_logfile_maxbytes=0
user = root
autostart = true
autorestart = true
priority = 500

И в schedule.sh

#!/bin/bash

while true; do
    php artisan yourcommand
    sleep 5
done

Но, безусловно, задания хронона в Swoole с миллисекундами - лучший способ справиться с этим.потому что у вас больше контроля над временем и выполнением.

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