请教如何让定时任务随start.php启动(已解决)

wocall

问题描述

按照官方教程:
https://www.workerman.net/doc/workerman/components/crontab.html

将其中的代码放入一个crontab.php的文档
如果放在根目录,单独执行:
php crontab.php start
是能正常工作的

我想让它随着系统命令
php start.php restart
一起启动,该如何做呢?

感谢

------------分割线--------------

通过官方的AI,已解决:

步骤一:新建进程文件

在 app/foo 目录下创建一个新的进程文件,例如 Task.php,并在其中定义你的定时任务。例如:

<?php
namespace app\foo;

use Workerman\Crontab\Crontab;

class Task
{
public function onWorkerStart()
{
// 每秒钟执行一次
new Crontab('/1 ', function(){
echo date('Y-m-d H:i:s')."\n";
});
}
}

步骤二:配置进程文件随webman启动

接下来,打开配置文件 config/process.php,并新增如下配置以注册你的定时任务进程:

return [
// 其它配置...

'foo_task'  => [
    'handler'  => app\foo\Task::class
],

];
注意,这里放在第一级

步骤三:重启webman

最后,重启webman以使配置生效。请注意,定时任务不会马上执行,所有定时任务将会在下一分钟开始计时执行。

说明

通过以上步骤,你在 app/foo 目录下的定时任务进程会在webman启动时自动运行。确保你的定时任务逻辑在 onWorkerStart 方法中正确实现。

259 1 0
1个回答

默笙

截图
佬,按照你的配置 启动是none 也没执行

<?php
declare(strict_types=1);

namespace app\admin\timer;

use Workerman\Worker;
use Workerman\Crontab\Crontab;

class Timer
{
    /**
     * 初始化定时器
     */
    public static function init()
    {
        // 设置时区
        date_default_timezone_set('PRC');

        $worker = new Worker();

        $worker->onWorkerStart = function () {
            // 每分钟执行一次的任务
            new Crontab('0 * * * * *', function() {
                self::minuteTask();
            });

            // 每小时执行一次的任务
            new Crontab('0 0 * * * *', function() {
                self::hourlyTask();
            });

            // 每天凌晨执行的任务
            new Crontab('0 0 0 * * *', function() {
                self::dailyTask();
            });
        };

        Worker::runAll();
    }

    /**
     * 每分钟执行的任务
     */
    protected static function minuteTask()
    {
        try {
            // 在这里添加每分钟需要执行的任务
            echo date('Y-m-d H:i:s') . " - 执行每分钟任务\n";
        } catch (\Exception $e) {
            echo date('Y-m-d H:i:s') . " - 每分钟任务执行失败: " . $e->getMessage() . "\n";
        }
    }

    /**
     * 每小时执行的任务
     */
    protected static function hourlyTask()
    {
        try {
            // 在这里添加每小时需要执行的任务
            echo date('Y-m-d H:i:s') . " - 执行每小时任务\n";
        } catch (\Exception $e) {
            echo date('Y-m-d H:i:s') . " - 每小时任务执行失败: " . $e->getMessage() . "\n";
        }
    }

    /**
     * 每天执行的任务
     */
    protected static function dailyTask()
    {
        try {
            // 在这里添加每天需要执行的任务
            echo date('Y-m-d H:i:s') . " - 执行每日任务\n";
        } catch (\Exception $e) {
            echo date('Y-m-d H:i:s') . " - 每日任务执行失败: " . $e->getMessage() . "\n";
        }
    }
} 
  • 暂无评论
×
🔝