安排Joomla站点脱机
我想知道是否有人有更多关于如何安排Joomla在特定日期和时间设置为“离线/维护模式”的详细信息。我发现了这一点,我想知道是否有人成功地(1)实现了一个自定义插件来添加此功能,或者(2)通过一个脚本将站点设置为脱机/维护模式,也许还有一个cronjob在特定时间运行脚本,或者(3)可能已经存在一个扩展,它只是添加了这个脱机/维护模式调度功能安排Joomla站点脱机,joomla,scheduled-tasks,offline,schedule,Joomla,Scheduled Tasks,Offline,Schedule,我想知道是否有人有更多关于如何安排Joomla在特定日期和时间设置为“离线/维护模式”的详细信息。我发现了这一点,我想知道是否有人成功地(1)实现了一个自定义插件来添加此功能,或者(2)通过一个脚本将站点设置为脱机/维护模式,也许还有一个cronjob在特定时间运行脚本,或者(3)可能已经存在一个扩展,它只是添加了这个脱机/维护模式调度功能 根据我之前链接到上面的帖子,我不确定插件是否有效,或者如何最好地使用脚本和cronjob技术。根据我对帖子中回复的理解,听起来脚本和cronjob是实现这一
根据我之前链接到上面的帖子,我不确定插件是否有效,或者如何最好地使用脚本和cronjob技术。根据我对帖子中回复的理解,听起来脚本和cronjob是实现这一点的唯一途径。如果有人能让我知道他们是否成功地实现了这一点,这将是多么好,或者关于如何实现这一点的任何建议或方向都会很有帮助。在我看来,为这么少的东西使用插件是不值得的。 我宁愿使用一个小脚本,如:
<?php
// Make sure this is only called through command line
if (php_sapi_name() !== "cli") die('Only command line');
// Replace by your joomla configuration file path
$configuration_file_path = '/var/www/joomla/configuration.php';
if (!empty($argv[1])) {
$offline = 1;
} else {
$offline = 0;
}
// Retrieve configuration file content
$configuration_content = file_get_contents($configuration_file_path);
// Replace the offline line by the calculated value
$configuration_content = preg_replace('/(.*)public \$offline =(.*)/m', '$1public $offline = \'' . $offline . '\';' , $configuration_content);
// Write back the configuration file
file_put_contents($configuration_file_path, $configuration_content);
如果您需要通过编辑/etc/crontab来运行cronjob,或将其添加到主机设置中:
# Offline at 4AM each day
0 4 * * * www-data php /path/of/your/script/offline.php 1 >> /dev/null 2>&1
# Online at 4:05AM each day
5 4 * * * www-data php /path/of/your/script/offline.php 0 >> /dev/null 2>&1
一些提示:
!空($argv[1])&&$argv[1]
更简单地表示为!空($argv[1])
。因此,您实际上可以将条件逻辑压缩为:$offline=(int)!空($argv[1])
此外,如果模式中没有^
或$
元字符,则m
模式修饰符将无效。总的来说,我可能会这样替换:preg\u replace(“/public\$offline=\K.*/”、“{$offline};”、$configuration\u content)
谢谢@mickmackusa,我应该说我不知道\K
的用法,它肯定会对我有帮助。我将根据这一点编辑我的答案,因为它显然更干净。对于某些人来说,简明的方法可能不够全面,我不知道这有什么规则。但是&&$argv[1]
是完全没有必要的。或者你可以发布你的,而不是编辑我的。。。我不知道改进答案的最佳方法是什么。不想在堆栈交换上问这个问题吗?
# Offline at 4AM each day
0 4 * * * www-data php /path/of/your/script/offline.php 1 >> /dev/null 2>&1
# Online at 4:05AM each day
5 4 * * * www-data php /path/of/your/script/offline.php 0 >> /dev/null 2>&1