我有一个相当大的Web应用程序构建,使用SproutCore和PHP作为后端。我现在想要的是使用websockets实时更新我的客户端应用程序。 据我所知,PHP处理持久连接真的很糟糕。所以我一直在想我可以使用Go来处理websockets连接,并在每次收到请求时调用我的PHP脚本(这package似乎可以实现)。
所以我的第一个问题是,你们认为这是一个好主意(还有一个可行的想法,我还没有找到人们这样做)或者我应该坚持使用PHP?
如果我使用Go来处理websockets连接,我也一直在想我可以逐步从PHP转向仅使用Go(因为它比PHP快得多)。如果我这样做,我将必须能够从PHP调用一些Go包。可以使用PHP exec
函数完成吗?有没有更好的办法 ?再说一次,这是一个好主意吗?
答案 0 :(得分:9)
Go非常适合websocket服务器。我已经在Go中构建了websocket服务器,并对它的运行方式非常满意。我有一个服务每月在一个Go websocket服务器上处理300k用户,它几乎不使用Amazon AWS微实例的1%CPU。不能幸福。
Websockets确实需要事件驱动的框架,如Go和Node.js,以便最大化服务器资源。像PHP这样的分叉Web进程比事件驱动的框架消耗更多的资源。
如果你需要在某个时候从PHP调用Go,我建议使用API调用。虽然exec
也可以。
答案 1 :(得分:-1)
这是一个老问题,但我在这个问题上的两分钱......
有一个非常好的php库可以完全满足您的要求 - websockets。它被称为Ratchet。我不会使用node.js(超过炒作)或者当php可以做同样的事情而且它是我最熟悉的语言。在大多数情况下,与websockets相比,性能几乎没有什么好处,不值得切换堆栈。
如果您计划使用棘轮,请使用其他有用的链接: