基于 Supervisor 运行控制台命令脚本,运行完毕 1 次之后,间隔 60 秒后再次运行控制台命令脚本的实现

1、配置文件 \channel-pub-api\build\c_files\etc\supervisord.d\yii-qq-transaction-video-sync.ini

[program:yii-qq-transaction-video-sync]
command = php /sobey/www/channel-pub-api/yii qq-transaction-video/sync
autorestart = true
startsecs = 0
stopwaitsecs = 10
stderr_logfile = /data/logs/yii-qq-transaction-video-sync-stderr.log
stdout_logfile = /data/logs/yii-qq-transaction-video-sync-stdout.log

2、在控制台命令脚本,运行 1 次,写入 1 个文件,代码如下

file_put_contents('/sobey/www/channel-pub-api/console/runtime/' . date('Y-m-d-H-i-s') . '.txt', time());

3、在开发环境升级后,查看目录 /sobey/www/channel-pub-api/console/runtime/ ,脚本执行完毕后,间隔 1 秒后,就立即执行下 1 次

-rw-r--r-- 1 root root 10 Nov 15 10:28 2018-11-15-10-28-29.txt
-rw-r--r-- 1 root root 10 Nov 15 10:28 2018-11-15-10-28-30.txt
-rw-r--r-- 1 root root 10 Nov 15 10:28 2018-11-15-10-28-31.txt
-rw-r--r-- 1 root root 10 Nov 15 10:28 2018-11-15-10-28-32.txt
-rw-r--r-- 1 root root 10 Nov 15 10:28 2018-11-15-10-28-33.txt
-rw-r--r-- 1 root root 10 Nov 15 10:28 2018-11-15-10-28-34.txt
-rw-r--r-- 1 root root 10 Nov 15 10:28 2018-11-15-10-28-35.txt

4、现在的需求是,运行完毕 1 次之后,间隔 60 秒后再次运行控制台命令脚本,最终决定在脚本内部基于 sleep 实现,脚本执行完毕后,间隔 61 秒后,就立即执行下 1 次

// 延缓执行 60 秒
sleep(60);
-rw-r--r-- 1 root root 10 Nov 15 10:45 2018-11-15-10-45-35.txt
-rw-r--r-- 1 root root 10 Nov 15 10:46 2018-11-15-10-46-36.txt
-rw-r--r-- 1 root root 10 Nov 15 10:47 2018-11-15-10-47-37.txt
-rw-r--r-- 1 root root 10 Nov 15 10:48 2018-11-15-10-48-38.txt
-rw-r--r-- 1 root root 10 Nov 15 10:49 2018-11-15-10-49-39.txt
永夜