Azure Web角色启动上的PhantomJS Web服务器exe
我正在尝试在Azure Web(或Worker)角色上启动PhantomJs的本地Web服务器实例,以便与HighCharts一起用于渲染服务器端图表图像 PhantomJs只是一个简单的Azure Web角色启动上的PhantomJS Web服务器exe,azure,phantomjs,azure-web-roles,azure-worker-roles,Azure,Phantomjs,Azure Web Roles,Azure Worker Roles,我正在尝试在Azure Web(或Worker)角色上启动PhantomJs的本地Web服务器实例,以便与HighCharts一起用于渲染服务器端图表图像 PhantomJs只是一个简单的.exe,可以通过以下命令作为Web服务器启动: phantomjs-highcharts-convert.js-主机127.0.0.1-端口3003 。。。然后可以针对它发出本地HTTP POST请求 我已将此命令包含在startup.cmd批处理脚本中,该脚本配置为在通过ServiceDefinition.
.exe
,可以通过以下命令作为Web服务器启动:
phantomjs-highcharts-convert.js-主机127.0.0.1-端口3003
。。。然后可以针对它发出本地HTTP POST请求
我已将此命令包含在startup.cmd
批处理脚本中,该脚本配置为在通过ServiceDefinition.csdef
发布时与我的Azure Web角色一起执行:
<Startup>
<Task commandLine="startup.cmd" executionContext="elevated" taskType="background" />
</Startup>
据我所知,这似乎在启动时执行得很好,但是,进程并没有保持运行。它只是执行并关闭。例如,我可以遥控进入框中,找到部署并手动执行startup.cmd
(其中命令窗口打开并保持打开状态),一切正常
如何在实例启动时执行PhantomJs exe Web服务器,使其继续运行且不关闭
我曾尝试在
ServiceDefinition.csdef
声明中将taskType
设置为simple
和background
,但它似乎没有改变任何东西。如果它正在执行,则可能是一个时间问题。您可以添加如下内容:
ping 1.1.1.1 -n 1 -w 300000 > nul
在执行脚本之前
您还可以通过管道发送到日志文件,这样,如果它正在执行,您就可以看到它在做什么。>>log.txt
如果它不执行,我可能会查看在后台执行且不交互的路径。结果表明,我没有将支持的
.js
文件设置为“复制到输出目录”,因此startup.cmd
无法找到它们
感谢Steve提出的输出日志建议,这让我看到了找不到“highcharts convert.js”的错误。我不明白你所说的时间问题是什么意思,也不明白ping会如何缓解这个问题。你能解释一下吗?我在
startup.cmd
中添加了一些日志,以确认它在启动时执行。是的。我还通过管道将phantomjs.exe调用的日志记录到日志中,但它没有记录该行的任何内容。我遇到了一些类似的问题,即依赖项没有像您一样启动,如果我以后完美地运行它,但如果启动运行的与它调用的完全相同,但它没有完成,因为box仍在运行所有内容。ping本质上是在其他服务启动时的暂停,在我的情况下,是在配置网站和应用程序时。我不知道phantom,它登录到哪里。如果以交互方式运行,您可能会在屏幕上看到输出?尝试ping延迟,似乎没有帮助。当我手动运行exe时,确实会看到屏幕输出。我猜如果我使用管道输出START命令,应该会记录这些内容?我删除了START
,并且能够通过调用.exe获得一些记录的输出。这让我找到了问题所在。见我贴出的答案。谢谢作为Web服务器启动PhantomJS的经验如何?我一直在创建一个新的c#进程来启动PhantomJS,我希望您能尝试改进性能。看起来PhantomJS仍然将其标记为“实验性”的,几个月来,他一直在夜间工作中使用它。没问题。你对PhantomJS进程陷入困境有任何问题吗?您知道如何在不进行完全角色回收的情况下重新启动PhantomJS进程吗?我有一个azure端点正在ping phantomjs服务器的状态,但是如果出现问题,我不知道如何在不完全重启vm的情况下重启phantomjs。我没有必要处理这个问题,对不起。
ping 1.1.1.1 -n 1 -w 300000 > nul