1

vqmod のすべての vqcache ファイルを一度に生成することはできますか?

サーバーの負荷が低く、すべてのqmodファイルを調べてすべての変更を適用し、準備ができて高負荷を待っているときに、このスクリプトを1回実行したいと思います。

これにより、エラーが発生するのを待つのではなく、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;
}

startup.php を modCheck する理由は、必要なファイルと vqmod によって行われた変更が含まれているためです。これは、この状況を処理する正しい方法ですか?

4

3 に答える 3

7

vQmod では/vqmod/mods.cache、最新バージョンのファイルを削除して更新する必要があります。また、最新バージョン(2.3.X +)でもファイルの名前変更/削除/追加で再生成されるため、古いバージョンがない限り、これは問題ではありません。Erdinç Çorbacı は、1 つの例外を除いて 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

..そして、うまくいくように見えるこのクイック/ダーティ/ハッキーなソリューションを思いつきました: https://gist.github.com/jktoole/be9fdee2263b48194d07

おそらく、問題の解決に役立つものに PHP ビットを変更することができます。

于 2015-08-14T10:28:00.967 に答える