phantomjs导致cpu使用率过高

发布于 2022-09-01 17:25:44 字数 811 浏览 16 评论 0

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%,想问问我代码的思路有问题吗?如何有效防止?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

关于从前 2022-09-08 17:25:44

找到原因了,因为在监听新窗口时候按照了它官方的写法

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%。

岁月蹉跎了容颜 2022-09-08 17:25:44

请教下phantomjs抓取了一些网址之后导致CPU负载过高,导致云主机挂机,怎么有效解决?

clipboard.png

姐不稀罕 2022-09-08 17:25:44

做好异常处理,一旦发生异常就退出phantomjs进程

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文