5

PhantomJs/CasperJS の各実行中に転送されたデータの量を確認/記録することは可能ですか?

Phantom/Casper の各インスタンスには、instance_id(インスタンスを起動した PHP 関数によって) が割り当てられています。実行が終了した後、転送されたデータの量とinstance_id、おそらくインスタンスを生成した PHP 関数を介して、MySQL データベースに挿入する必要があります。このようにして、個々の phantomjs 実行の帯域幅使用率をログに記録できます。

多くのファントム/キャスパー インスタンスが実行されている可能性があり、それぞれが 1 ~ 2 分持続します。

4

1 に答える 1

3

データを取得しようとするときの最も簡単で正確な方法は、コレクターとエミッターをできるだけ近づけることです。この場合、phantomjs が必要なデータを取得し、それを PHP 関数に送り返して instance_id に関連付け、データベースとのやり取りを行うことができれば理想的です。(少なくとも部分的に)できることがわかりました。

1 つのアプローチを次に示します。

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 アクティビティは含まれません。アプリケーションによっては、これで十分な場合があります。そうでない場合は、これが良い出発点になることを願っています。

于 2013-01-26T23:38:01.487 に答える