2009-07-07 13 views
0

我々私は、ステージングモジュール上で呼び出されますスレーブサーバ、上のページを作成したい1 CMSと3台のスレーブサーバ バックグラウンドプロセスでサイトコアの検索インデックスとリンクデータベースを再構築し

で上演した環境を持っていますすべてのインデックスとリンクデータベースを再構築します。

私が使用することができます知っている:

Globals.LinkDatabase.Rebuild(Factory.GetDatabase("web")); 

をリンクデータベースを再構築します。

上記のコードをsitecoreコンテキストにアクセスできる別のプロセスで取得する方法と、別のバックグラウンドスレッドでWebデータベースのすべてのインデックスを再構築する方法についても説明します。

おかげで

答えて

2

私は、サイトコアを持つ前に、この問題に遭遇し、わずかに異なるapprochを取ってきました。ステージングモジュールが呼び出すページを持つ代わりに、私はpublish:endイベントをタップし、カスタムハンドラを追加してリンクデータベースを再構築しました。

<event name="publish:end"> 
    <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
     <sites hint="list"> 
      <site>website</site> 
     </sites> 
    </handler> 
    <handler type="Sitecore.EventHandlers.CredentialCacheClearer, Sitecore.EventHandlers" method="ClearCache"> 
     <sites hint="list"> 
      <site>website</site> 
     </sites> 
    </handler> 

    // Custom Publish Action Below 
    <handler type="Customized.Publish.LinkDatabase, Customized" method="Process"/> 
</event> 
namespace Customized.Publish 
{ 
    public class LinkDatabase 
    { 
     /// <summary> 
     /// Rebuild the web link database. 
     /// </summary> 

     public void Process() 
     { 
      // Web db 
      Sitecore.Globals.LinkDatabase.Rebuild(Sitecore.Configuration.Factory.GetDatabase("web")); 
     } 

     /// <summary> 
     /// For invoking as an event, typically publish:end. 
     /// </summary> 
     public void Process(object sender, EventArgs args) 
     { 
      this.Process(); 
     } 
    } 
} 
関連する問題