Laravel在Forge服务器上连续运行过程

时间:2019-05-20 20:57:16

标签: laravel ubuntu

在先前使用CodeIgniter内置的应用中,我已在服务器上放置了一个如下所示的脚本:

#include<conio.h>

然后我将使用#!/bin/sh while true do php /var/www/html/index.php nameOfController nameOfScript sleep 1 done 运行它。

我想知道您如何针对Laravel应用执行此操作。它将托管在DigitalOcean上并通过Forge进行部署,但我认为这不会有任何不同。

Laravel的脚本会一样吗?由于我尚未投入生产,所以我想知道是否有人在设置此类脚本方面有经验。

更新

之所以要这样运行,是因为它是一个在加密货币交易所交易的脚本。有时(由于API的质量较低...),该脚本将花费1秒,但有时则需要15秒。如果我使用cronjob每隔1秒说一次,并且脚本在1秒后仍在运行,则cron作业将使其再次运行而无需完成(这对于应用程序至关重要)。因此,我想要一个脚本,该脚本可以一遍又一遍地运行相同的功能,但是不会在设定的时间间隔内运行。

1 个答案:

答案 0 :(得分:0)

如果您在伪造中使用与Laravel集成的Swoole,则可以制作Millisecond cron job

如果您不使用Swoole,则可以将程序放在伪造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毫秒cron作业是一种更好的管理方式,因为您可以更好地控制时间和执行。