卡斯珀/幻影崩溃并自动重启

Casper/Phantom crashes and auto restart

本文关键字:重启 崩溃 幻影 卡斯      更新时间:2023-09-26
Fatal Windows exception, code 0xc0000005.
PhantomJS has crashed. Please read the bug reporting guide at 
<http://phantomjs.org/bug-reporting.html> and file a bug report.

当我使用 casperJS 递归打开新页面时,此错误会随机弹出。它并不是那么随机,它会在几次迭代(可能大约 50 次)后出现。

我不认为这是内存泄漏,因为我在运行脚本时正在监视内存使用情况,并且已经关闭了所有繁重的内存应用程序。

我已经看到有人在 github 上报告此问题,但我认为它还没有修复。

有没有办法让我的机器在检测到崩溃后重新运行 Casper 脚本?(即在检测到崩溃后自动运行$casperjs运行.js)

我正在考虑使用 shell 脚本来执行此操作,但不确定如何检测崩溃。

当然,任何关于修复此崩溃的想法也会很好。

不确定这是否有帮助,但我也把我的 Casper 代码放在这里:

var runCasper = function(){
    casper.start('https://www.example.com', function() {
        // Do something
    });
    casper.then(function() {
        // Do something
        runCasper();
    });
    casper.run();
}

您可以尝试的一件事是继续检查 casper/phantom 进程是否正在运行。 您可以通过在每次运行的开始和结束时编写状态文件来执行此操作。查看有关在 casper 中使用文件系统 https://stackoverflow.com/a/15283576/2231632。从该答案中截取的代码:

var fs = require('fs');
var utils = require('utils');
var data = fs.read('testdata.dat');
utils.dump(data);

然后添加一个经常读取此文件的 shell 脚本,如果特定进程处于"运行"阶段超过 10 分钟左右,您可以从 shell 脚本重新运行 casper。

理想情况下,每个递归都应该有一个退出条件,你不能永远递归。通过一次又一次地递归打开同一页面,您想实现什么?