我有一个zendframework项目,需要定期运行脚本来上载文件夹的内容,而另一个确实要下载。脚本本身已经准备好,但是我正在努力找出在何处或如何设置脚本来运行。到目前为止,我已经尝试过山猫和 curl 。我首先遇到有关指定 Controller 错误的错误,并已解决,但现在运行脚本时出现空白屏幕,但未上传文件。
对于zendframework项目,我如何设置要由cron运行的脚本?
编辑:
我的项目结构如下所示:
mydomain.com
application
library
logs
public
index.php
scripts
cronjob.php
tests
cronjob.php是我需要运行的脚本。前几行是:
<?php
define("_CRONJOB_",true);
require('/var/www/remotedomain.info/public/index.php');
我还修改了index.php文件,如下所示:
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
/** Cronjobs don't need all the extra's **/
if(!defined('_CRONJOB_') || _CRONJOB_ == false)
{
$application->bootstrap()->run();
}
但是现在当我现在尝试运行脚本时,我收到消息:
Message: Invalid controller specified (scripts).
这是否意味着我需要为此目的创建一个 Controller ?但是脚本文件夹在应用程序文件夹之外。我该如何解决?
最佳答案
谢谢大家的回答。但是,对我有用的解决方案来自此站点Howto: Zend Framework Cron。原始链接已失效,但可以在Internet Archive中找到its copy。
我在这里发布了一部分代码。但这不是我的解决方案。所有学分归原始作者所有。
The trick with cronjobs is that you do not want to load the whole View part of ZF, we don't need any kind of HTML output! To get this to work, I defined a new constant in the cronjob.php which I will check for in the index.php.
cronjob.php
define("_CRONJOB_",true);
require('/var/www/vhosts/domain.com/public/index.php');
// rest of your code goes here, you can use all Zend components now!
index.php
date_default_timezone_set('Europe/Amsterdam');
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
/** Cronjobs don't need all the extra's **/
if(!defined('_CRONJOB_') || _CRONJOB_ == false)
{
$application->bootstrap()->run();
}
关于zend-framework - 我如何设置cron作业是zend框架项目的一部分的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191059/