有没有办法从 Windows Azure 上的命令行轻松运行 PHP 应用程序?
我有一个标准的 Web 应用程序(在 Azure 上),我想使用 WebSockets 进行通信。所以我需要在 Azure 上一直运行一个 WebSocket 服务器。
我使用需要“一直”运行的Wrench 项目来监听某个端口并处理来自 JavaScript 发送的 WebSocket 的消息。
再说一遍 -在 Azure 上运行“持久” PHP 应用程序有多容易?
先感谢您。
Sandrino 的回答很好,但我更喜欢ProgramEntryPoint来做这种事情。后台任务的问题在于(除非您自己构建一些东西)没有任何东西可以监控它。使用ProgramEntryPoint
,Windows Azure 将监视该进程,如果它因任何原因退出,角色实例将重新启动。
编辑:
Sandrino 指出 PHP 程序并不是唯一运行的程序。(还有一个网站。)在这种情况下,我建议Run()
在WebRole.cs
. Process.Start
它然后对它做一个.WaitForExit()
。这样,如果进程退出,角色本身也会退出Run()
,导致角色实例重新启动。有关示例,请参见http://blog.smarx.com/posts/using-other-web-servers-on-windows-azure 。
这是 Azure 上的 WebSockets 服务。- 实时 XSockets.NET
查看http://live.xsockets.net,这是一种简单的入门方式,但这取决于您将在“服务器端”做什么。我提到的这项服务可以用作“消息”调度程序,以通知“客户”的变化等。嗯,换句话说,它是一种提升“常规”网络应用程序的方式。
为了将您的 PHP 脚本作为命令行应用程序运行,您应该使用PHP CLI(命令行界面)。
php.exe -f "yourWebSocketServce.php" -- -arg1 -arg2 -arg3
现在,为了在 Windows Azure 中运行它,您需要定义一个运行此命令的启动任务。您会看到默认任务类型是simple,这意味着您的角色的启动将被阻止,直到任务完成。但是在您的情况下,在 PHP 中运行 WebSocket 将是一个阻塞过程,这就是您应该将类型更改为背景的原因(这将确保实例在您的 WebSocket 服务器运行时继续启动)。