【发布时间】: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