我們做的Drupal網站數據量都比較大,幾年前一開始就遇到cron運行報錯的情況,主要就是因為cron運行期間要生成xmlsitemap,遇到php的内存限制或者運行時間限制導緻出錯無法正常執行,我們當時采取的辦法是修改“Minimum sitemap lifetime(sitemap最小存在時間)”為10年(drush vset xmlsitemap_minimum_lifetime "315360000",并且還要修改modules/xmlsitemap/xmlsitemap.admin.inc中的内容,增加10年這個表單選項),這樣10年内讓cron碰不到需要重新生成sitemap的情況,從而來禁止cron運行期間生成xmlsitemap(具體見《Drupal網站中不讓Cron自動更新Boost_Cache及XML_Sitemap》),這樣修改後,cron就可以正常運行。此後的sitemap.xml的重新生成都是通過drush命令來進行的,因為需要占用大量内存、運行很長時間,所以都是大約幾個月或者幾年才重新生成一次。
最近Drupal 6升級到Drupal 7以及Drupal 7本身的升級中,看到xmlsitemap這個第三方模塊也有升級,其中的高級設置多了一個選項:Disable cron generation of sitemap files.(禁止cron生成sitemap文件)後面有說明:This can be disabled if other methods are being used to generate the sitemap files, like drush xmlsitemap-regenerate.我們本來就是用drush xmlsitemap-regenerate來生成sitemap.xml的,這個設置正好為我所用,不需要修改xmlsitemap_minimum_lifetime為10年以及修改modules/xmlsitemap/xmlsitemap.admin.inc中的内容這種不是很正規的辦法了。批量設置的時候,運行一句drush vset xmlsitemap_disable_cron_regeneration 1 就可以。
另外,數據量超過幾十萬、上百萬的時候,需要很大内存來生成xmlsitemap,以前是直接修改apache配套的php的配置文件php.ini,生成sitemap後再還原php.ini,今天找到一個辦法,在/root/.drush下新建一個文件drush.ini,裡面放
memory_limit = 8192M max_execution_time = 3600
就可以把内存限制設置為8G、最長執行時間設置為3600秒等。
還有,我們以前的多語言、手機版網站的網站地圖,是通過修改修改sites/all/modules/xmlsitemap/xmlsitemap.page.inc來進行的,具體見《Drupal網站多語言版的站點地圖自動轉換》、《Drupal網站手機版的站點地圖Mobile XML Sitemap》,現在啟用responsive_bartik後的網站就不存在專門的手機版了,但如果還有多語言版本,依然要向以前那樣修改xmlsitemap模塊的文件。
评论