2015-09-10 78 views
0

我的劇本後,工作細到目前爲止,sequentiell爲了通過線加載文本文件的行每一頁(page.open是asynchron和頁面對象是全球覆蓋=新的要求,這是一個大clusterfuck運行多個page.open()一次),匹配用於從它的特定域和印刷JSON值的每個請求。PhantomJS崩潰150-180網址

但是,如果我用一個.txt文件超過150〜鏈接,它只是崩潰每一次,大多是沒有錯誤消息,並沒有崩潰轉儲這樣的:

PhantomJS已崩潰。請務必閱讀正文 http://phantomjs.org/crash-reporting.html崩潰報告指南,並在 https://github.com/ariya/phantomjs/issues/new發送錯誤報告。 不幸的是,沒有崩潰轉儲可用。 (爲%TEMP%(C:\用戶\ XXX \應用程序數據\本地的\ Temp),你可以不寫的目錄)

我可以重現,很容易,如果我多次運行它,不要緊,如果我一次或一次完成。 如何防止崩潰?如果Phantom無法處理,我的腳本就沒用了。

但有時我得到一個崩潰轉儲:

PhantomJS已崩潰。請務必閱讀正文 http://phantomjs.org/crash-reporting.html崩潰報告指南,並在 https://github.com/ariya/phantomjs/issues/new發送錯誤報告。 請附上崩潰轉儲文件: C:\用戶\ XXX \應用程序數據\本地的\ Temp \ a4fd6af6-1244-44d3-8938-3aabe298c2fa.dmp

https://www.dropbox.com/s/i3qi5ed33mbblie/500%20links%20-a4fd6af6-1244-44d3-8938-3aabe298c2fa.dmp?dl=1

https://www.dropbox.com/s/najdz9fhdexvav1/500%20links-%2095ebab5c-859b-40e9-936b-84967471779b.dmp?dl=1

https://www.dropbox.com/s/1d2t8rtev85yf96/500%20links%20-%20d450c8e1-9728-41c7-ba52-dfef466f0222.dmp?dl=1

並且在極少數情況下我甚至會收到一條錯誤消息,Process Explorer說該進程一次最多有21個線程

的QThread ::開始:無法創建線程()

console.log('Hello, world!'); 
var fs = require('fs'); 
var stream = fs.open('500sitemap.txt', 'r'); 
var webPage = require('webpage'); 
var i = 1; 
var hasFound = Array(); 
var hasonLoadFinished = Array(); 

function handle_page(line) { 
var page = webPage.create(); 
page.settings.loadImages = false; 
page.open(line, function() {}); 

page.onResourceRequested = function(requestData, request) { 
    var match = requestData.url.match(/example.de\/ac/g) 
    if (match != null) { 
     hasFound[line] = true; 
     var targetString = decodeURI(JSON.stringify(requestData.url)); 
     var klammerauf = targetString.indexOf("{"); 
     var jsonobjekt = targetString.substr(klammerauf,  (targetString.indexOf("}") - klammerauf) + 1); 
     targetJSON = (decodeURIComponent(jsonobjekt)); 
     var t = JSON.parse(targetJSON); 
     console.log(i + " " + t + "  " + t['id']); 
     request.abort; 
    } else { 
     //hasFound = false; 
     return; 
    } 

}; 
page.onLoadFinished = function(status) {  
    if (!hasonLoadFinished[line]) { 
     hasonLoadFinished[line] = true; 
     if (!hasFound[line]) { 
      console.log(i + " :NOT FOUND: " + line); 
      console.log(""); 
     } 
     i++; 
     setTimeout(page.close, 200); 
     nextPage(); 
    } 
} 
}; 

function nextPage() { 
var line = stream.readLine(); 
if (!line) { 
    end = Date.now(); 
    console.log(""); 
    console.log(((end - start)/1000) + " Sekunden"); 
    phantom.exit(0); 
} 
hasFound[line] = false; 
hasonLoadFinished[line] = false; 
handle_page(line); 
} 

start = Date.now(); 
nextPage(); 

回答

0

/編輯與1.9.8後墜毀3836個鏈接....回至開始......... ..

好像問題就出到2.0版本。測試1.9.8出於挫折 - 它的工作原理,使用RAM少60%,沒有與1000 Urls崩潰。

在github

崩潰報告完成後,有什麼救濟,它的工作原理。