【问题标题】:PhantomJS Webserver exe on Azure Web Role StartupAzure Web 角色启动上的 PhantomJS Webserver exe
【发布时间】:2014-08-01 21:08:12
【问题描述】:

我正在尝试在 Azure Web(或 Worker)角色上启动 PhantomJs 的本地网络服务器实例,以与 HighCharts 一起使用以呈现服务器端图表图像。

PhantomJs 只是一个简单的.exe,可以使用以下命令作为网络服务器启动:

phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003

...然后可以针对它发出本地 HTTP POST 请求。

我已将此命令包含在 startup.cmd 批处理脚本中,该脚本配置为在通过 ServiceDefinition.csdef 发布时使用我的 Azure Web 角色执行:

<Startup>
  <Task commandLine="startup.cmd" executionContext="elevated" taskType="background" />
</Startup>

启动.cmd:

START phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003

EXIT /B 0

据我所知,这似乎在启动时执行得很好,但是,进程并没有保持运行。它只是执行并关闭。例如,我可以远程进入盒子,找到部署并手动执行startup.cmd(其中一个命令窗口打开并保持打开状态),一切正常。

如何在实例启动时执行 PhantomJs exe 网络服务器到它继续运行且不关闭的位置?

我尝试在ServiceDefinition.csdef 声明中将taskType 设置为simplebackground,但它似乎没有任何改变。

【问题讨论】:

    标签: azure phantomjs azure-web-roles azure-worker-roles


    【解决方案1】:

    如果它正在执行,则可能是时间问题。您可以添加如下内容:

     ping 1.1.1.1 -n 1 -w 300000 > nul
    

    在执行脚本之前。

    您还可以通过管道输出到日志文件,这样如果它正在执行,您就可以看到它在做什么。 >> 日志.txt。

    如果它没有执行,我可能会查看它在后台执行而不是交互的路径。

    【讨论】:

    • 我不明白你所说的时间问题是什么意思,或者 ping 会做什么来缓解这个问题。你能解释一下吗?我向startup.cmd 添加了一些日志记录,以确认它在启动时执行。确实如此。我还将 phantomjs.exe 调用的日志记录通过管道传输到日志中,但它没有为该行记录任何内容。
    • 我遇到了类似的问题因为盒子还在把所有东西都拿出来。 ping 本质上是在其他服务启动时暂停,在我的情况下,网站和我的应用程序已配置。
    • 我不知道幻影,它在哪里登录。如果以交互方式运行,您大概会在屏幕上看到输出?
    • 尝试了 ping 延迟,似乎没有帮助。当我手动运行 exe 时,我确实看到了屏幕输出。我猜如果我用管道输出 START 命令应该记录下来?
    • 我删除了 START 并能够通过调用 .exe 获得一些日志输出。这让我找到了问题所在。请参阅我发布的答案。谢谢!
    【解决方案2】:

    原来我没有将支持的.js 文件设置为“复制到输出目录”,所以startup.cmd 找不到它们。

    感谢 Steve 提供的输出日志记录建议,它让我看到了找不到“highcharts-convert.js”的错误。

    【讨论】:

    • 您将 PhantomJS 作为网络服务器的体验如何?我一直在创建一个启动 PhantomJS 的新 c# 进程,我正在考虑按照您的路线尝试并提高性能。看起来 PhantomJS 仍然将其标记为“实验性”phantomjs.org/api/webserver
    • 几个月来一直在使用它来完成夜间工作。没问题。
    • 您是否遇到过 PhantomJS 进程陷入困境的任何问题?你知道如何在不进行完整的角色回收的情况下重新启动 PhantomJS 进程吗?我有一个 azure 端点,它正在 ping phantomjs 服务器的状态,但如果出现问题,我不确定如何在没有完全 vm 重启的情况下重启 PhantomJS。
    • 抱歉,我不必处理这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多