1

是否可以一次为 vqmod 生成所有 vqcache 文件?

我想在服务器负载低时运行此脚本一次,它将遍历所有 qmod 文件并应用所有更改,准备好并等待高负载。

这也会提醒我任何 vqmod 错误,而不必等待它们发生。

例如,当我安装/卸载扩展时,我还需要卸载 vqmod 扩展:

/**
 * install/uninstall vqmod files for extension
 *
 * @param string $action = install/uninstall
 */
private function _vqmodAction($action){

    $vqmod_path = str_replace("system", "vqmod", DIR_SYSTEM);

    // Clear vqmod cache
    $files = glob($vqmod_path.'vqcache/vq*');
    if ($files) {
        foreach ($files as $file) {
            if (file_exists($file)) {
                @unlink($file);
                clearstatcache();
            }
        }
    }

    // Force vqmod to re-generate cache
    global $vqmod;
    $vqmod->modCheck(DIR_SYSTEM . 'startup.php');

    // Re-name vqmod files
    $vqmod_xml_path = $vqmod_path . "xml/";
    $vqmod_files = array('file', 'file_languages', 'file_admin');
    foreach($vqmod_files as $filename){
        if($action == "uninstall"){
            $from = '.xml';
            $to = '.xml_';
        } else {
            $from = '.xml_';
            $to = '.xml';
        }
        if (file_exists($vqmod_xml_path.$filename.$from)) {
            rename($vqmod_xml_path.$filename.$from, $vqmod_xml_path.$filename.$to);
        }
    }

    return true;
}

modCheck 启动.php 的原因是因为这包括所需的文件和通过 vqmod 所做的更改。这是处理这种情况的正确方法吗?

4

3 回答 3

7

vQmod 只要求您删除/vqmod/mods.cache最新版本中的文件以使其刷新。它还会在最新版本(2.3.X +)中重命名/删除/添加文件时重新生成,因此除非您有旧版本,否则这不是问题。Erdinç Çorbacı 对于 httrack 工具是正确的,但有一个例外 - 除非登录到管理区域,否则它不会为任何管理页面生成 vqcache 文件。当然,只需删除/vqmod/vqcache/vq2-*文件和/vqmod/mods.cache(如果存在)就足以强制重新生成

于 2013-03-19T16:50:30.840 回答
2

您可以使用 httrack 等外部程序手动执行此操作。当您使用类似的应用程序抓取您的网站时,所有页面都将在您的网站访问者之前被访问。因此将创建所有缓存文件。

http://www.httrack.com/

你需要偶尔重复一遍吗?如果是这样,您需要制作一个自我爬行/或缓存制造商脚本。

于 2013-03-19T14:53:57.720 回答
0

我没有足够的声誉直接回复@dhaupin 的评论,希望他们能看到这一点。

我遇到了类似的问题,在这里描述:https ://github.com/vqmod/vqmod/issues/51

..并想出了这个似乎可行的快速/肮脏/hacky解决方案:https ://gist.github.com/jktoole/be9fdee2263b48194d07

您可能可以将 PHP 位修改为有助于解决您的问题的东西。

于 2015-08-14T10:28:00.967 回答