zend-framework - 我如何设置cron作业是zend框架项目的一部分的脚本

标签 zend-framework cron

我有一个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/

相关文章:

php - Zend Framework 不允许我包含 Google Maps API

css - 在 Zend 中设置主体类

Azure功能-Cron触发器-每秒都可以,但不是每分钟

ruby-on-rails - 何时不触发 Sidekiq 作业

Linux Cron 作业出现错误 "/tmp/crontab.XXXXsIOyNm":2: bad minute while creating new job

jquery - 以不同的顺序附加样式表或 js 文件有什么区别?如何使用 append 和 prepend 样式表或 append 和 prependfile?

php - zend Framework 2 - 使用验证器比较2个输入?

javascript - 如何将外部 javascript 文件添加到 Zend Framework 2 应用程序?

linux - 如果从 cron 运行,zip 会创建空文件

PHP & 定时任务 : security issues