gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:54:02 25 4
gpt4 key购买 nike

**Question : How to schedule a cron on 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 时收到此错误“无法连接到 MySQL”。更改您的configuration.php:

公共(public)$主机='127.0.0.1';

而不是 public $host = 'localhost';是的,这是一个双**!浪费了几个小时......

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

Stackoverflow 对我来说是一个巨大的帮助,我从成员(member)的回答中受益匪浅,今天我很高兴以这个答案参与社区,我希望这能帮助像我这样没有选择合作的开发者Joomla。

我希望这可以帮助别人!

关于Joomla (3.X) 如何安排 cron?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31397472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com