2013-01-03 17 views
5

是否可以檢查/記錄每次運行PhantomJs/CasperJS期間傳輸的數據量?檢查/記錄PhantomJS/CasperJS使用多少帶寬

Phantom/Casper的每個實例都有一個instance_id分配給它(由PHP函數驅動實例)。運行結束後,傳輸的數據量和instance_id將不得不通過生成實例的PHP函數插入到MySQL數據庫中。這樣可以記錄單個phantomjs運行的帶寬利用率。

可以運行許多幻影/ casper實例,每個實例持續一兩分鐘。

+0

似乎富有成效:http://www.google.com/?q=linux%20monitor%20network%20traffic%20per%20process – goat

回答

3

試圖捕獲數據時最簡單和最準確的方法是儘可能使收集器和發射器儘可能靠近。在這種情況下,如果phantomjs可以捕獲您需要的數據並將其發送回您的PHP函數以將其關聯到instance_id並執行數據庫交互,那麼這將是理想的。原來它可以(至少部分)。

這裏有一個辦法:

var page = require('webpage').create(); 
var bytesReceived = 0; 

page.onResourceReceived = function (res) { 
    if (res.bodySize) { 
     bytesReceived += res.bodySize; 
    } 
}; 

page.open("http://www.google.com", function (status) { 
    console.log(bytesReceived); 
    phantom.exit(); 
}); 

此捕捉檢索到的所有資源的規模,增加了他們,他們吐出來,結果到標準輸出,其中PHP代碼能夠與它合作。這不包括標題或任何POST活動的大小。根據您的應用程序,這可能就足夠了。如果沒有,那麼希望這會給你一個很好的起點。

+1

這不,也不能準確地總結傳輸的大小,因爲不計算gzip壓縮。 –