【问题标题】:Joomla Extension - cronjob equivalentJoomla 扩展 - cronjob 等效
【发布时间】:2014-01-18 15:34:42
【问题描述】:

在我的扩展(一个插件)中,我希望每隔一段时间运行一些 SQL 脚本(一些数据库清理操作);一天一次或一周一次可能就足够了。不需要正好在那个时间间隔内,如果有人访问该站点就可以触发。

在理想情况下,这些可能由 cron 脚本运行,但并非每个使用我的扩展程序的人都可以访问其服务器上的 crontab,因此该解决方案需要在没有 cronjobs 的情况下工作。

搜索“joomla cronjob”及其组合我还没有找到 Joomla 框架中已经存在的任何东西(只是额外的扩展,如 JPrc Cronjobs;但它需要已经存在于框架中或包含在框架中我的扩展)。

考虑自己实现它(因为无论如何我的插件已经在每个站点调用上运行),想到的直接解决方案是在执行操作时存储时间戳,然后在下一次操作运行时检查是否有适当的时间间隔已经过去了。

但是,我会将时间戳存储在哪里?一个单独的表似乎完全是多余的(尽管它可能是最干净的解决方案)。 Joomla 扩展是否有一些简单的键值存储?我也没有看到这样的东西。

所以,我的问题归结为:

  • Joomla 框架(在 Joomla >= 2.5 上工作)中是否有一个功能可以每隔一段时间触发一次代码?
  • 或者,是否有地方可以快速简单地存储单个键值对?

【问题讨论】:

  • Andrew Eddie 有一个应用程序,您可以将其安装为 cron 作业,然后它会按计划轮询 cron 组中的每个插件。基本问题是,仅响应请求而运行的 Web 应用程序需要……请求,因此它不是检查 cron 的可靠方法,除非您确定自己有大量流量或以某种方式触发请求自动按计划进行。这就是为什么 crons 通常会作为命令行应用程序运行。该框架将支持守护进程,因此您可能可以使用它,但似乎又假设服务器访问。
  • 所以我什至必须在服务器上安装一个应用程序?不可能的。那么我也可以使用 cronjobs。正如我所说,完全按计划运行的能力并不重要。如果根本没有流量,不运行该作业完全没问题。
  • 如果您对没有严格的时间表感到满意,您可以像其他人提到的那样,在请求发生时踢它并检查时间。
  • 正如我在我的问题中已经说过的那样,我遇到的问题不是我已经提到的这个一般想法,而是如何最好地在那里存储时间。你读过这个问题吗?
  • 您的问题是 Joomla 框架中是否有一个功能(在 Joomla >= 2.5 上工作)会每隔一段时间触发一次代码?或者,是否有一个地方可以快速简单地存储单个键值对?我可能会将其缓存或存储在插件的参数中。

标签: joomla joomla2.5 joomla3.2


【解决方案1】:

由于您的代码在每次页面调用时都会运行,因此您的第二个解决方案实施起来会简单得多。您可以利用内置的扩展参数来存储特定于扩展的值。

首先,看看这里: https://stackoverflow.com/a/13221472/1867759

此解决方案非常适合您。唯一的区别是,由于您已经在您的插件中,您可以通过$this->params 访问参数,而不是从JComponentHelper 调用它们。

希望这会有所帮助!

【讨论】:

  • 看起来很有希望,我将不得不思考如何针对我的情况进行调整,我明天会尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 2021-08-18
  • 2012-10-15
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多