Php zend fzend framework 2 cron
我已经在Zend Framework 2中创建了应用程序。我想作为cron作业运行控制器操作。我读了很多关于它的书,但我不知道如何运行它 我做过类似的事情。我将控制台路由添加到模块的Php zend fzend framework 2 cron,php,cron,zend-framework2,Php,Cron,Zend Framework2,我已经在Zend Framework 2中创建了应用程序。我想作为cron作业运行控制器操作。我读了很多关于它的书,但我不知道如何运行它 我做过类似的事情。我将控制台路由添加到模块的module.config.php 'console' => array( 'router' => array( 'routes' => array( 'cronroute' => array( 'options'
module.config.php
'console' => array(
'router' => array(
'routes' => array(
'cronroute' => array(
'options' => array(
'route' => 'updateproducts',
'defaults' => array(
'controller' => 'Application\Controller\Console',
'action' => 'update'
)
)
)
),
),
),
public function cronTest(){
$data = array(
'login' => 'cronZend'
);
$this->tableGateway->insert($data);
}
$dbc = mysqli_connect(****);
$query = "INSERT INTO vm_user (login) VALUES ('cron')";
mysqli_query($dbc, $query);
我创建了名为ConsoleController
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Application\Model;
use Application\Model\Auth;
class ConsoleController extends AbstractActionController
{
protected $usersTable = null;
public function updateAction()
{
$this->getUsersTable()->cronTest();
return false;
}
public function getUsersTable()
{
if (!$this->usersTable) {
$sm = $this->getServiceLocator();
$this->usersTable = $sm->get('Application\Model\UsersTable');
}
return $this->usersTable;
}
内部Auth.php
'console' => array(
'router' => array(
'routes' => array(
'cronroute' => array(
'options' => array(
'route' => 'updateproducts',
'defaults' => array(
'controller' => 'Application\Controller\Console',
'action' => 'update'
)
)
)
),
),
),
public function cronTest(){
$data = array(
'login' => 'cronZend'
);
$this->tableGateway->insert($data);
}
$dbc = mysqli_connect(****);
$query = "INSERT INTO vm_user (login) VALUES ('cron')";
mysqli_query($dbc, $query);
我认为这里的一切都很好,我尝试在共享服务器的命令行中编写一些东西:
/usr/local/bin/php /home/****/domains/****/public_html/public/index.php updateproducts
但它不起作用。当我在cron.php
'console' => array(
'router' => array(
'routes' => array(
'cronroute' => array(
'options' => array(
'route' => 'updateproducts',
'defaults' => array(
'controller' => 'Application\Controller\Console',
'action' => 'update'
)
)
)
),
),
),
public function cronTest(){
$data = array(
'login' => 'cronZend'
);
$this->tableGateway->insert($data);
}
$dbc = mysqli_connect(****);
$query = "INSERT INTO vm_user (login) VALUES ('cron')";
mysqli_query($dbc, $query);
和在命令行中
/usr/local/bin/php /home/****/domains/****/public_html/cron.php
它很好用。有谁能告诉我哪里出了问题或者怎么做吗?乍一看,您的代码看起来不错。当你说“它不起作用”时,会发生什么?你收到错误信息了吗?如果从终端窗口运行该命令,输出结果是什么?@timfuntaok工作正常,我做错了什么。当我在
module.config.php
中更改控制器和对其他对象的操作时,它开始工作。你帮了我的忙,写了“你的代码乍一看很好”。非常感谢。要在本地主机上进行测试,请导航到项目目录并在控制台中运行cron以查看错误,然后在共享主机中进行配置。若要从控制台运行,若尚未配置,则需要配置php环境变量。