我正在编写一个php脚本,可以让人们改变他们的drupal网站的主题。到目前为止,这么好,但最后一件事我无法弄明白。每次提交表单时,数据库都会更改,但主题不会更改。显然,我还必须清除缓存。我在Drupal网站上找到了这个:
<?php
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
drupal_flush_all_caches();
?>
我应该使用这个脚本创建一个小文件'clear.php',每次我想清除缓存时,我都应该转到这个文件并清除缓存中的内容......
但他们是我的问题。我不知道如何在我的脚本中调用此页面。 当然我可以制作一个按钮,将用户重定向到这个页面,但我喜欢它在一个脚本中。
有什么想法吗?或者是他们使用php刷新Drupal缓存的其他方法吗?
提前致谢!
答案 0 :(得分:3)
一些提示:
drupal_flush_allcaches();
?那你就不需要引导了。 您还可以使用hook_menu在自定义模块中创建带有函数回调的菜单项,然后将其放在您的代码段中。再次无需引导。
如果确实需要单独的脚本,请将其放在安装的根文件夹中,然后调用mysite.com/clear.php
。如果你把它放在其他地方,你应该改变bootstrap.inc的路径(因为它是一个相对路径)
cache_clear_all('theme_registry', 'cache', TRUE);
答案 1 :(得分:1)
Tadaa,做到了:)
只需在我的脚本中粘贴这篇文章:
$deletecachesql = "DELETE FROM cache";
$deletecachequery = mysql_query($deletecachesql) or die ("error").mysql_error();
$deletecacheresult = mysql_fetch_array($deletecachequery);
脚本确实清除了缓存,但我不确定这是一件好事。该网站还告诉我删除:
这是明智的做法吗?要像这样清除(删除)缓存吗?
答案 2 :(得分:0)
此链接可能对您有所帮助
答案 3 :(得分:0)
小心使用mysql语句以编程方式清除缓存。
这可能会破坏整个drupal注册表,你最终可能会在drupal bootstrap上出现一个空白页面,所以即使是drush也可能会失败。
修复此问题的唯一方法是使用&#34; registry_rebuild&#34;从这里: https://drupal.org/project/registry_rebuild
我试图昨天手动清除缓存并以此方式结束。 我强烈建议继续使用以下内容:
cache_clear_all(NULL, 'cache_page');
OR
drupal_flush_all_caches();
答案 4 :(得分:0)
在任何纯文本编辑器中打开 settings.php(/sites/default/settings.php)。将此行添加到文件末尾并保存:
$settings['rebuild_access'] = TRUE;