phantomjs导致cpu使用率过高
phantomjs导致cpu使用率过高
场景
-
使用casperjs,phantomjs的封装
-
连续下载多个网页
-
php使用exec调用casperjs脚本
-
所抓取的网页都是同一个网站的一个类型页面,需要模拟点击一个按钮跳转到新页面(要下载的就是这个新页面)
问题
-
有时候使用top命令可以看到phantomjs的cpu使用率过高(将近100%)
描述
有个需求是这样的,下载一连串的html页面,为了支持phantomjs,我采用了最新的casperjs(不稳定版)
php:
foreach() {
$result = downloadHTML();
if $result == false {
retry;(重试3次)
}
}
casper.js
var casper = require('casper').create();
casper.start(url);
fs.write(htmlFile, this.getHTML(), 'w');
if success {
exit(0);
} else {
exit(1);
}
类似这样的操作,结果发现有时候phantomjs卡住了,然后cpu使用率达到了100%,想问问我代码的思路有问题吗?如何有效防止?
baga、⑨
9 years, 2 months ago
Answers
找到原因了,因为在监听新窗口时候按照了它官方的写法
casper.waitForPopup(/popup\.html$/, function() {
this.test.assertEquals(this.popups.length, 1);
});
casper.withPopup(/popup\.html$/, function() {
this.test.assertTitle('Popup title');
});
然后改成
casper.waitForPopup(/popup\.html$/, function() {
this.test.assertEquals(this.popups.length, 1);
casper.withPopup(/popup\.html$/, function() {
this.test.assertTitle('Popup title');
});
});
妈蛋,按照官方的写法,脚本在一些情况下是有问题的,但是脚本出错了以后phantomjs没有退出,反而导致了cpu使用率高达了将近100%。
成熟的小8
answered 9 years, 2 months ago