use*_*714 1 php cron cakephp dispatcher cakephp-2.3
我按照这个网站的说明:http://colorblindprogramming.com/cronjobs-in-cakephp-2-in-5-steps,但我的cronjob不起作用.
这是我的/app/cron_dispatcher.php:
<?php
if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
if (!defined('ROOT')) {
define('ROOT', dirname(dirname(__FILE__)));
}
if (!defined('APP_DIR')) {
define('APP_DIR', basename(dirname(__FILE__)));
}
if (!defined('WEBROOT_DIR')) {
define('WEBROOT_DIR', basename(dirname(__FILE__)));
}
if (!defined('WWW_ROOT')) {
define('WWW_ROOT', dirname(__FILE__) . DS);
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
if (function_exists('ini_set')) {
ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
}
if (!include('Cake' . DS . 'bootstrap.php')) {
$failed = true;
}
} else {
if (!include(CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php')) {
$failed = true;
}
}
if (!empty($failed)) {
trigger_error("CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your " . DS . "cake core directory and your " . DS . "vendors root directory.", E_USER_ERROR);
}
App::uses('Dispatcher', 'Routing');
define('CRON_DISPATCHER',true);
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(
new CakeRequest($argv[1]),
new CakeResponse());
Run Code Online (Sandbox Code Playgroud)
这是我的cron控制器:
<?php
App::uses('AppController', 'Controller');
class CronController extends AppController {
public $name = 'Cron';
public $uses = array('NewsletterUser');
public function beforeFilter() {
parent::beforeFilter();
$this->layout=null;
}
public function delete_spam() {
// Check the action is being invoked by the cron dispatcher
if (!defined('CRON_DISPATCHER')) { $this->redirect('/'); exit(); }
//no view
$this->autoRender = false;
$this->NewsletterUser->deleteAll(array("NOT" => array('NewsletterUser.active' => 1)), false);
}
}
Run Code Online (Sandbox Code Playgroud)
cron调用:php /home/somepath/public_html/app/cron_dispatcher.php/cron/delete_spam
什么都没发生,Cron不起作用.为什么???
忽略该页面,它会提供错误的建议并提出错误的架构.这是错的.
相反,你应该使用一个shell.请参阅CakePHP书中有关shell的页面.
如果编写得当,您的应用程序应该在模型中包含所有数据处理和操作代码.通过这种方式,代码很容易在控制器和shell之间共享.
| 归档时间: |
|
| 查看次数: |
1866 次 |
| 最近记录: |