CakePHP:在没有人访问网站时运行函数

CakePHP:在没有人访问网站时运行函数,php,cakephp,Php,Cakephp,我想在我的CakePHP中运行一些函数,比如更改记录的状态和删除数据库中过期的记录。例如,每24小时一次 最明显的问题是运行一个函数,据我所知,该函数需要有人实际访问该网站。是否可以在没有用户访问网站以运行代码的情况下自动运行函数 例如,我有以下代码: function garbage() { $deadline = date('Y-m-d H:i:s', time() - (24 * 60 * 60)); // keep tickets for 24

我想在我的CakePHP中运行一些函数,比如更改记录的状态和删除数据库中过期的记录。例如,每24小时一次

最明显的问题是运行一个函数,据我所知,该函数需要有人实际访问该网站。是否可以在没有用户访问网站以运行代码的情况下自动运行函数

例如,我有以下代码:

function garbage() 
    {         
        $deadline = date('Y-m-d H:i:s', time() - (24 * 60 * 60)); // keep tickets for 24h. 
        $ticketObj = new Ticket(); 
        $data = $ticketObj->query('DELETE from tickets WHERE created < \''.$deadline.'\''); 
    } 
函数垃圾()
{         
$deadline=date('Y-m-dh:i:s',time()-(24*60*60));//保留24小时的车票。
$ticketObj=新票证();
$data=$ticketObj->query('DELETE from ticket WHERE created<\'.$deadline.'\'');
} 

这将删除超过24小时的过期票据。但这只在有人访问网站时运行。它能在每晚午夜自动运行吗?

您需要设置一个cronjob


这里有一个很好的指导:您需要设置一个cronjob


这里有一个很好的指导:您可以将代码编写为,并以运行方式运行。

您可以将代码编写为,并以运行方式运行。

是的,它应该作为cron作业来完成

就蛋糕而言,您应该在模型中使用一个方法,并通过shell调用它。

另外,你在问题中的例子也不太像蛋糕。 例如,应该避免使用
query()
方法

这样应该更好(假设您有
票据
型号):


是的,它应该作为cron作业来完成

就蛋糕而言,您应该在模型中使用一个方法,并通过shell调用它。

另外,你在问题中的例子也不太像蛋糕。 例如,应该避免使用
query()
方法

这样应该更好(假设您有
票据
型号):


使用CakePHP中的此实现实现一个cron作业:如果您真的需要它。使用CakePHP中的此实现实现一个cron作业:如果您真的需要它。
<?php 
class Ticket extends AppModel

public function garbage($deadline = null) {
    //http://book.cakephp.org/2.0/en/models/deleting-data.html#deleteall
    $this->deleteAll(array($this->alias . 'created <' => $deadline), false);
}