fastadmin 执行定时任务

创建时间:2022-05-18 15:18:11
分类: PHP代码片段

fastadmin 有一个定时任务管理插件,只要安装这个插件并且进行合理配置就可以在fastadmin管理后台中专注于脚本的业务和功能开发,而不需要花费过多的心思在服务器管理上。

fastadmin中通过配置定时任务管理插件进行脚本开发的过程如下:

1、在fastadmin管理后台的定时任务插件管理中搜索定时任务,安装免费的定时任务插件

2、安装完成之后在常规管理中就会多出插件管理菜单

3、在这里就可以对定时任务进行管理

4、在定时任务中可以选择的任务类型包括请求URL、执行SQL和执行SHELL。

执行shell

1、在crontab中增加任务

* * * * * /usr/bin/php /www/yoursite/public/index.php /addons/crontab/autotask/index > /dev/null  2>&1 &

2、在php.ini中找到disable_functions,并将其中的shell_exec删除,启用shell_exec并重启php-fpm。

3、重启php-fpm

确定你要使用的PHP版本

通过linux命令确定对应版本的php-fpm的进程号

ps aux | grep php-fpm

然后重启,重启的命令为:kill -USR2 [进程号]

4、在 application/command.php 中增加你的脚本配置。

然后在 application/admin/command 目录中根据你在 application/command.php 中填写的脚本配置创建脚本并编写脚本。

5、执行脚本

在脚本编写完成之后,在项目根目录下执行 php think SyncName[脚本名称] 即可执行脚本

6、在 crontab 中增加定时任务

* * * * * /usr/bin/php /www/yoursite/think [脚本名称]

但是在执行的时候你会发现有问题,什么问题呢?

会报错说找不到 ./thinkphp/console.php 文件。我猜测导致这个问题的原因是定时任务在执行脚本命令的时候并不在项目根目录下,所以使用相对目录的时候会在当前目录下进行搜索,自然就找不到对应文件。但是这个只是我的猜测并没有进行确定。

因为我当时开发任务非常紧张,时间已经没有了,所以我把 think 文件中的相对目录修改成了绝对路径,如下两图

修改之后的代码如下图

我把 think 中的代码由相对代码 require './thinkphp/console.php'; 修改为 require __DIR__.'/thinkphp/console.php'; 绝对路径,然后就可以正常执行了。

但是对于有强迫症的我来说,直接修改框架是不可接受的,所以我后续有时间的时候会探索一下其他办法。这里记一个 TODO。