【问题标题】:how to run an admin task in joomla with a cron job?如何使用 cron 作业在 joomla 中运行管理任务?
【发布时间】:2011-07-18 15:01:12
【问题描述】:

我在 Joomla 中编写了一个自定义组件!从 XML 提要中提取内容并将其存储在 Joomla 数据库中。我希望管理员 URL (/administrator/index?option=com_mycomp) 每晚通过 cron 运行一次以运行该组件。不过,我不知道如何进行这项工作,因为该组件是一项管理员任务,您必须登录才能运行它。

我如何解决这个问题?我尝试在 url (http:admin:password@www.mysite.com/joomla/administrator....) 中包含我的用户/密码,但它不起作用。有没有其他方法可以发送登录凭据,或者有其他方法可以做到这一点?

【问题讨论】:

  • 您要么需要编写一个 php scfipt 来登录并执行它,要么只需使用硬编码密码或 HTTP_REFERER 检查使其成为前端组件
  • 您找到解决此问题的方法了吗?我还在开发一个组件,该组件需要每天至少运行一次才能与数据库同步。您找到解决方法了吗?

标签: joomla cron


【解决方案1】:

我知道这个帖子已经很老了,但这是我处理类似任务的方式。

“诀窍”是获取您创建的自定义 PHP 代码,并将其嵌入到您的 Joomla 网站内的一篇文章中。

我通过使用 JUMI 扩展来做到这一点,它允许将自定义 PHP 代码存储在 Joomla 存储库中,并根据需要嵌入到文章中。

然后,创建一个 CRON 任务,该任务将为包含您要运行的代码的页面激活相应的 URL。

【讨论】:

  • 轮到我问这个非常古老的答案了!你能告诉我你用什么命令来运行这篇文章。
  • 查看我的更新答案,类似于Jumi,但您可以在Joomla 中准确定义您要调用的网址
【解决方案2】:

只要把你的脚本放在组件的管理员目录下就好了

/administrator/components/com_yourcomponent/cron.yourcomponent.php

这就是FeedGator 处理 cron 任务的方式 [听起来与您尝试做的非常相似。] ...您还可以在每个 cmets 的组件中编写一个前端控制器

========== [更新] =============

我创建了this ultra-simple installable component,也可以用于此目的。它允许将前端菜单项分配给 php 页面(包括建议的路由)。所以你:

  1. 安装组件
  2. 创建新菜单项,(可能要使用'hidden' menu)选择“显示”视图选项并在“要包含的文件”中输入要通过cron运行的脚本,例如path/yourcron.php
  3. 在您的 cron 中调用“页面”或使用以下命令进行测试:yourjoomlasite.com/index.php?option=com_show 或 yourjoomlasite.com/your-menu-alias

【讨论】:

    【解决方案3】:

    即使您的组件仅在 Joomla 中与管理员打交道,大多数玉米网址也可以在前端工作。 因此,无论您在 admin cron 中的代码如何,都将其发送到前端 & 以便您的 cronurl 变得像 index.php?option=com_yourcomponent&task=cronjob。 使用此 url 使用 cPanel 设置 cron。

    但是,此解决方案不需要查看管理员是否已登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-27
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 2015-12-07
      • 2014-02-27
      相关资源
      最近更新 更多