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 run.js)
我正在考虑使用shell脚本来执行此操作,但不确定如何检测崩溃。
当然,任何解决这次崩溃的想法都会很好。
不确定这是否有帮助,但我也将Casper代码放在这里:
var runCasper = function(){
casper.start('https://www.example.com', function() {
// Do something
});
casper.then(function() {
// Do something
runCasper();
});
casper.run();
}
答案 0 :(得分:0)
您可以尝试的一件事是继续检查casper / phantom进程是否正在运行。您可以通过在每次运行的开始和结束时写入状态文件来完成此操作。查看https://stackoverflow.com/a/15283576/2231632是否在casper中使用文件系统。代码从这个答案中悄然而来:
var fs = require('fs');
var utils = require('utils');
var data = fs.read('testdata.dat');
utils.dump(data);
然后添加一个经常读取此文件的shell脚本,如果某个特定进程处于“运行”阶段超过10分钟左右,则可以从shell脚本重新运行casper。
理想情况下,每个递归都应该有一个退出条件,你不能永远继续递归。你想通过一次又一次地递归打开同一页面来实现什么?