Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在websocket服务器中查询数据库_Php_Ajax_Websocket - Fatal编程技术网

Php 在websocket服务器中查询数据库

Php 在websocket服务器中查询数据库,php,ajax,websocket,Php,Ajax,Websocket,我目前正在开发一个web应用程序,我正在开发一个聊天应用程序功能。我想创建一个实时聊天功能,它使用WebSocket和phpwebsocket作为ws-server,我想将聊天记录到数据库中,我的问题是,从用户体验和web服务器性能来看,以下哪一项是最佳实践: 每当客户机发送消息时,消息首先通过ajax发送到服务器,脚本进行必要的处理并将其记录到数据库中,然后返回true,成功后将信息返回给客户机,然后,回调函数将消息发送到websocket服务器,而服务器只是将其转发给收件人 每当客户机发送消

我目前正在开发一个web应用程序,我正在开发一个聊天应用程序功能。我想创建一个实时聊天功能,它使用WebSocket和phpwebsocket作为ws-server,我想将聊天记录到数据库中,我的问题是,从用户体验和web服务器性能来看,以下哪一项是最佳实践:

  • 每当客户机发送消息时,消息首先通过ajax发送到服务器,脚本进行必要的处理并将其记录到数据库中,然后返回true,成功后将信息返回给客户机,然后,回调函数将消息发送到websocket服务器,而服务器只是将其转发给收件人
  • 每当客户机发送消息时,消息都会被发送到websocket服务器,websocket进行处理并发布到数据库,然后成功后将消息转发给收件人

  • 我对第二个选项的担心是websocket服务器的负载过大,因为它是一个为不同客户端提供服务的单一脚本……对于聊天解决方案,任何帮助都将不胜感激。

    对于聊天解决方案,websocket似乎是更好的方法,只要您了解您的IE支持有限(IE9不能做websocket)


    现在,关于您的担忧,运行poC是一个不错的方案,但作为建议,我认为这两种方案的性能将相似,因为它将由应用服务器处理。如果事实证明DB访问是一个问题,您仍然可以找到一些解决方案,比如将消息放在某种异步队列上,并让一些单独的进程将它们写入数据库。这仅在成功的DB写入不是关键的或响应不需要的情况下才有效。

    感谢您的响应,如果我想问如何将消息放入异步队列,请举个例子。再次感谢你,首先我要从一个卷研究开始。只有当您有任何性能问题时,才建议使用排队,但这与使用ajax请求的风险相同。这里有一个使用PHP可以做什么的例子:Thanx Martin,如果我的建议能派上用场,我将首先接受你的建议和doa卷研究。谢谢你的帮助