5

Ist es möglich, zu überprüfen/zu protokollieren, wie viele Daten bei jedem Lauf von PhantomJs/CasperJS übertragen wurden?Prüfen/Protokollieren, wie viel Bandbreite PhantomJS/CasperJS verwendet wurde

Jeder Instanz von Phantom/Casper ist eine instance_id zugewiesen (von der PHP-Funktion, die die Instanz hochgespielt hat). Nachdem der Lauf beendet ist, muss die Menge der übertragenen Daten und der instance_id in eine MySQL-Datenbank eingefügt werden, möglicherweise über die PHP-Funktion, die die Instanz erzeugt hat. Auf diese Weise kann die Bandbreitennutzung einzelner PhantomJs-Läufe protokolliert werden.

Es kann viele Phantom/Casper-Instanzen geben, die jeweils eine oder zwei Minuten dauern.

+0

scheint fruchtbar: http://www.google.com/?q=linux%20monitor%20network%20traffic%20per%20process – goat

Antwort

3

Der einfachste und genaueste Ansatz beim Erfassen von Daten besteht darin, Kollektor und Emitter so nah wie möglich zu erreichen. In diesem Fall wäre es ideal, wenn phantomjs die benötigten Daten erfassen und zurück an Ihre PHP-Funktion senden könnte, um sie der instance_id zuzuordnen und die Datenbankinteraktion durchzuführen. Stellt sich heraus (zumindest teilweise).

Hier ist ein Ansatz:

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(); 
}); 

Das die Größe aller Ressourcen erfasst abgerufen, ergänzt sie und spuckt das Ergebnis auf die Standardausgabe heraus, wo Ihre PHP-Code der Lage ist, mit ihm zu arbeiten. Dies umfasst nicht die Größe von Headern oder POST-Aktivitäten. Abhängig von Ihrer Anwendung könnte dies ausreichend sein. Wenn nicht, dann gibt es hoffentlich einen guten Startpunkt.

+1

Dies kann nicht und kann die übertragene Größe nicht genau zusammenfassen, da Gzip-Komprimierung nicht gezählt wird. –