问题:如何在Joomla上安排一个cron?
子问题:我不明白是否有php文件和代码写?或者我应该设置Unix Cron(不确定我可以与主机提供商)?
细节:我已经制作了一个组件,我希望这个组件每天执行一次.
Kai*_*are 12
哈利路亚!
这是答案.
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();
Run Code Online (Sandbox Code Playgroud)
现在你需要安排你的cron.
打开终端并键入
> crontab -e
Run Code Online (Sandbox Code Playgroud)
如果以vi文本编辑器打开,您可以按ZZ或:q!退出然后键入此以获得更好的文本编辑器(在Mac上)
> export EDITOR=nano
Run Code Online (Sandbox Code Playgroud)
然后
> crontab -e
Run Code Online (Sandbox Code Playgroud)
并添加如下所示的行:
*/1 * * * * php /Applications/MAMP/htdocs/YOURPROJECT/PATH-TO-THE-CRON/cronTask.php
Run Code Online (Sandbox Code Playgroud)
您可以通过键入来检查这是否正常
> crontab -l
Run Code Online (Sandbox Code Playgroud)
*/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位置.
我希望这会对某人有所帮助!
| 归档时间: |
|
| 查看次数: |
7084 次 |
| 最近记录: |