卡斯珀/幻影崩溃并自动重启
Casper/Phantom crashes and auto restart
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。
理想情况下,每个递归都应该有一个退出条件,你不能永远递归。通过一次又一次地递归打开同一页面,您想实现什么?
相关文章:
- 如何在Javascript中定义一个简单的自动重启倒计时
- MDN文档中关于弄清楚XUL元素的段落是什么意思:“如何将覆盖扩展转换为无重启”
- 如何修复IE 9中的文档模式重启
- 卡斯珀/幻影崩溃并自动重启
- 新闻自动收报机 - 过早重启
- 游戏重启Javascript/Jquery
- 重启CSS3动画后's停止
- 我的功能无法重启的原因是什么?
- 如果扩展被禁用,firefox重启后无法重新启用该扩展
- Three.js在单页webapp中正确重启场景
- popcorn.js可以检测切换视频,无需重启即可继续
- HTML5视频无法重启
- HTML5视频javascript控件-重启视频
- Webpack不会在不重启服务器的情况下将更改捆绑到某些文件中
- nodemon,Nodeclipse不会在文件更改时自动重启
- JavaScript / jQuery:在最后一次迭代时重启for循环
- 更新文件时不需要重启Node.js中的服务器
- 谷歌浏览器,音频,setTimeout,替换音频src,重启中间音频
- Javascript在闭包内重启定时器
- 节点重启前如何删除pid文件