我們不少Drupal搭建的網站數據量都很巨大,遇到一些不太常見的問題,例如導入數據的過程中遇到以下報錯提示:
出現錯誤。 /admin/content/node_import/3/continue { "status": 1, "message": "40 rows imported\x3cbr /\x3e0 rows with errors", "percentage": 10 }<br /> <b>Fatal error</b>: Maximum execution time of 60 seconds exceeded in <b>/mnt/gb2/htdocs/drupal.youbianku.com/includes/cache.inc</b> on line <b>33</b><br />
上個月在運行cron的時候也遇到類似提示:
Fatal error: Maximum execution time of 240 seconds exceeded in /mnt/gb2 docs/drupal.mingluji.com/includes/database.inc on line 225
當時嘗試了修改php的設置(可以修改php.ini、.htaccess或程序中加set_time_limit(0);這三種辦法),但報錯依然,查了網上的資料,需要修改Drupal中的程序。于是修改了includes/common.inc,将其中的@set_time_limit(240);改為@set_time_limit(360);就沒有報這樣的錯了,後來又遇到Squid的報錯:
錯誤
您所請求的網址(URL)無法獲取
當嘗試讀取以下網址(URL)時: http://114.mingluji.com/admin/reports/status/run-cron
發生了下列的錯誤:
Read Timeout
讀取超時
系統回應:[No Error]
A Timeout occurred while waiting to read data from the network. The network or server may be down or congested. Please retry your request.
當通過網絡讀取數據時,超過了等待時限。 可能是因為網絡堵塞或連接的網絡服務器已關閉。請重新嘗試。
修改Squid的配置文件後,終于解決了這個問題。
這次是導入的時候遇到問題,采用上面的辦法無法解決,後來在drupal.org上找到一篇文章,需要修改node_import.inc,将1007行删除或者注釋或者修改那個60:
set_time_limit(variable_get('node_import:set_time_limit', 60));
我這樣修改後就可以繼續導入而不報錯了。
评论1
生成xml sitemap過程中超時240秒報錯的解決
很長時間沒有更新drupal 網站的sitemap了,近期用drush xmlsitemap-regenerate命令來批量更新,但在遇到數據量大的網站時,有時會遇到類似這樣的報錯:
有時是includes/path.inc報錯,有時是includes/common.inc,sites/all/modules/xmlsitemap/xmlsitemap.module等,網上查了一些資料,試着改了php.ini、.htaccess、common.inc、mysql.inc、locale.inc、modules/node/node.module等程序中的時間限制設置,到都沒有效果,最後修改sites/all/modules/xmlsitemap/xmlsitemap.module中的這個才解決:
這裡把240秒的限制改成了1800秒。(補充:改為1800秒後基本上都可以解決,但有一些多語言網站,在生成多達50種語言的站點地圖時依然會報告1800秒超時,高幹脆改為24000秒,就都不會再報超時錯了。)
另外,如果發現'Unknown error occurred while writing to file sites'、'XMLSitemapGenerationException'這樣的報錯,可以修改xmlsitemap.xmlsitemap.inc的第161行,把
改為
就可以了。