Joomla(3.X)如何安排一个cron?

时间:2015-07-14 04:08:28

标签: joomla cron

  

问题:如何在Joomla上安排一个cron?

     

子问题:我不明白是否有要写的php文件和代码?或者我应该设置一个Unix Cron(不确定我可以与主机提供商)?

     

详情:我已经制作了一个组件,我希望这个组件每天执行一次。

2 个答案:

答案 0 :(得分:11)

哈利路亚!

这是答案。

Stackoverflow对我来说是一个巨大的帮助,我从会员的优点中受益匪浅,今天我很高兴能够通过这个答案参与社区活动,我希望这会帮助像我这样没有选择合作的开发人员。的Joomla。

所以这里是如何用Joomla构建一个cron。

正如Elin所说,没有建立cron所以我们必须使用unix cron。 cron将调用php脚本。要使脚本工作,您需要加载Joomla框架。

你可以在/ cli中获得例子

这是我的Cron

<?php

// Initialize Joomla framework
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
    require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', dirname(__DIR__));
    require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

// Load the configuration
require_once JPATH_CONFIGURATION . '/configuration.php';

require_once JPATH_BASE . '/includes/framework.php';

/**
 * Cron job 
 *
 */
class myCron extends JApplicationCli
{
    /**
     * Entry point for the script
     *
     * @return  void
     *
     * @since   2.5
     */
        public function doExecute()
        {

// YOUR CODE HERE
            require_once JPATH_BASE.'/administrator/components/com_mycom/helpers/XMLImporter.php';

            echo "CRON TASK START ";
        echo "\n"; // Use \n is you are executing the cron from the terminal.

            $instance = PropertyXMLImporter::instance();
            $instance->execute_import();

        echo "CRON TASK END ";
        echo "\n";
        }
    }

JApplicationCli::getInstance('myCron')->execute();

现在你需要安排你的cron。

打开终端并输入

> crontab -e

如果以vi文本编辑器打开,您可以按ZZ或:q!退出然后键入此以获得更好的文本编辑器(在Mac上)

> export EDITOR=nano

然后

> crontab -e

并添加如下所示的行:

*/1 * * * * php /Applications/MAMP/htdocs/YOURPROJECT/PATH-TO-THE-CRON/cronTask.php

您可以输入

来检查这是否正常
> crontab -l

* / 1 * * * *是Cron日程表语法,请点击此处阅读:https://en.wikipedia.org/wiki/Cron

在我们的案例中,我使用* / 1来触发每个微小的测试目的。当然,你想在它工作时改变它。在我的情况下,我希望它每天凌晨3点运行。所以我改为0 3 * * *

重要事项1:为了测试目的每分钟启动一个cron作业,不要忘记/ 1! (* / 1 * * * *)与(1 * * * *)不同。

重要2:如果在执行本地主机上的cron时出现此错误&#34;无法连接到MySQL。&#34;使用

更改configuration.php

public $ host =&#39; 127.0.0.1&#39;;

而不是公共$ host =&#39; localhost&#39 ;; 是的,这是一个双性恋! 失去了几个小时... ...

重要3:我在上面写的代码,如果你把你的cron放在/ cli中就很好。我不确定这是最好的地方,所以请记住调整路径到你的cron位置。

我希望这能帮助别人!

答案 1 :(得分:0)

你也可以在cpanel中设置cron并在cpanel上提供cron文件路径 给这种类型的路径:

/public_html/your_projects/cron.php