Joomla (3.X) 如何安排 cron?
Joomla (3.X) How to schedule a cron?
**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 $host = '127.0.0.1';
而不是 public $host = 'localhost';
是的,这个是双性恋!
浪费了几个小时...
重要提示 3:如果将 cron 放在 /cli 中,我上面写的代码就很好。我不确定这是最好的地方,所以请记住根据您的 cron 位置调整路径。
Whosebug 对我帮助很大,我从成员的回答中受益匪浅,今天我很高兴带着这个答案参与社区,我希望这能帮助像我这样别无选择的开发人员使用 Joomla。
我希望这可以帮助别人!
您也可以在 cpanel 中设置 cron 并在 cpanel 上提供 cron 文件路径
给出这种类型的路径:
/public_html/your_projects/cron.php
**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 $host = '127.0.0.1';
而不是 public $host = 'localhost'; 是的,这个是双性恋! 浪费了几个小时...
重要提示 3:如果将 cron 放在 /cli 中,我上面写的代码就很好。我不确定这是最好的地方,所以请记住根据您的 cron 位置调整路径。
Whosebug 对我帮助很大,我从成员的回答中受益匪浅,今天我很高兴带着这个答案参与社区,我希望这能帮助像我这样别无选择的开发人员使用 Joomla。
我希望这可以帮助别人!
您也可以在 cpanel 中设置 cron 并在 cpanel 上提供 cron 文件路径 给出这种类型的路径:
/public_html/your_projects/cron.php