2009-07-07 4 views
0

Мы поэтапную среду с 1 CMS и 3 ведомых серверовRebuild Sitecore индекс поиска и базы данных ссылки в фоновом процессе

Я хочу создать страницу на подчиненном сервере, который будет называться модулем ступенчатого на успешное опубликование, которое будет восстанавливать все индексы и базу данных ссылок.

Я знаю, что я могу использовать:

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

восстановить базу данных ссылок.

Как получить вышеуказанный код в отдельном процессе, который имеет доступ к контексту sitecore, а также как перестроить все индексы для веб-базы данных - снова в отдельном фоновом потоке.

Благодаря

ответ

2

Я сталкивалась с этим вопросом, прежде чем с Sitecore и принял несколько иной 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(); 
     } 
    } 
}