gpt4 book ai didi

javascript - 从本地主机上的 Rails Controller 执行时,PhantomJS 脚本挂起

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:15 25 4
gpt4 key购买 nike

我正在使用 phantomjs gem:https://github.com/colszowka/phantomjs-gem

当脚本从 Controller 启动时:

Phantomjs.run('./public/javascripts/test.js')

rails 服务器在脚本运行时挂起,等待它完成。

phantomjs 脚本“test.js”如下所示:

var page = require('webpage').create();
page.viewportSize = { width: 1920, height: 1080 };
page.open('http://localhost:3000', function () {
window.setTimeout(function () {
page.render('./public/test.png');
phantom.exit();
}, 3000);
});

我假设的问题是,当 phantomjs 试图访问 rails 服务器时,rails 正在等待脚本完成,但由于服务器很忙,它们都互相阻止。

有什么解决办法吗?

编辑地址@Artjom B.:

1) 是的,我在 ubuntu 14.04 LTS 上使用 PhantomJS 2.0,我会尝试更早的版本。
2) 不确定你在这里问什么,我无法通过这种方式从 phantomjs 访问日志,所以我看不到任何记录到控制台的内容。如果您知道解决此问题的方法,请告诉我。似乎无法在来自 ruby​​ 的 phantomjs 调用上运行 -debugger。
3) 是的,该脚本在命令行中运行良好,完全没有问题。
4)这里也没有跟着你。 Phantomjs.run 命令是在测试操作下从我的 Controller 中触发的。如果打开本地服务器以外的页面,此命令运行良好。

最佳答案

你必须使用像puma这样的多线程网络服务器.

参见 here了解不同选项的概览。

另一个陷阱可能是您的 Controller 逻辑。如果由 phantom 呈现的页面触发与调用 phantom 的页面相同的 Controller 操作,则会创建一个无限循环。

然后,即使是多线程服务器也会卡住:)


此问题与 PhantomJS.rb freezing when trying to screen capture page in my rails application 重复请关闭这个。我缺乏这样做或将其写为评论的声誉。

关于javascript - 从本地主机上的 Rails Controller 执行时,PhantomJS 脚本挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33022240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com