OctoberCMS任务调度无法工作

3

我正在使用基于Laravel的OctoberCMS。

我没有SSH访问我的服务器。

每天我需要删除一些在注册后24小时内未激活其帐户的用户,因此我考虑使用任务调度(如cronjobs)。

根据octobercms docs的说明,我应该在Custom Component的Plugin.php中为注册任务调度制作一个函数-我已经完成了。

我已经注册了未激活帐户且超过1天的用户。

但问题是-什么也没有发生。

这是我在组件的plugin.php中的代码:

public function registerSchedule($schedule)
{
    $schedule->call(function() {
        \DB::connection('mydb')->table('u')->whereRaw('u.created_at <= NOW() - INTERVAL 1 DAY')->where('is_activated','=',0)->delete();
    })->everyMinute();
}

注意: 为了测试,我已经将“-> everyMinute()”更改为“-> daily()”。

1
你是否按照这里指定的方式设置了cron job:https://octobercms.com/docs/setup/installation#crontab-setup? - dragontree
不,我没有因为我没有通过控制台访问服务器的权限,我也不知道如何在没有SSH访问权限的情况下进行操作。 - Z.S
1个回答

2
你可以使用你的主机或像https://www.setcronjob.com这样的服务来进行经典HTTP调用。
在插件的根文件夹中创建一个routes.php文件,并添加以下路由:
use Route;

Route::get('/yourprefix/delete_users', function () {
DB::connection('mydb')->table('u')->whereRaw('u.created_at <= NOW() - INTERVAL 1 DAY')->where('is_activated','=',0)->delete();
});

当然,你可以添加一些身份验证来保护它。

谢谢,我的朋友,问题已经解决了;但是我的问题是,为什么我的任务计划程序没有工作?因为我没有在控制台中设置它吗? - Z.S
https://octobercms.inetis.ch/cron-without-command-line 你也可以使用相同的技巧来使用artisan。但是你可能会遇到服务器超时的问题。 - Pierre-André Vullioud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接