【问题标题】:Php socket client - C# socket serverPHP 套接字客户端 - C# 套接字服务器
【发布时间】:2014-03-10 10:08:43
【问题描述】:

我正在开发一个由 PHP Web 服务器和 C# 程序组成的系统。它们都在同一主机上运行。 Web 服务器从客户端(手机)接收数据,然后更新到数据库,有时它应该通知 C# 程序。为此,我在 Php 端打开一个套接字客户端,然后在 C# 程序端连接到一个套接字服务器,如下所示:

(PHP网络服务器端)

1) process HTTP Request from clients

2) update data to database

3) if need to notify C# program (depending on received data)
    3.1) open a socket client (localhost, 8888)
    3.2) send data
    3.3) close socket

到目前为止,我们的系统在少量客户端(用于测试)的情况下运行良好,但我不确定在大量客户端的情况下。

任何人都可以给我一些cmets来提高性能!

【问题讨论】:

  • 首先,具体问题是什么?大量(多少?)客户的表现不佳?一个想法是使用像 RabbitMQ 这样的消息传递解决方案并进行发布/订阅。
  • 假设我们的系统希望在 1 秒内为 1000 个客户提供服务。你认为我的设计中存在一些大问题(比如瓶颈)吗?你有更好的主意来解决这样的问题吗?无论如何,喜欢你的推荐“RabbitMQ”。

标签: c# php sockets phpwebsocket


【解决方案1】:

套接字相对来说非常快;与使用说消息 Q 相关。套接字本身不会阻塞;您的单个 C# 程序应该能够应付负载;否则消息将继续堆积,最终套接字发送调用将开始备份。

Message Q 系统是专为执行您在此处尝试执行的操作而设计的系统 - 它们提供允许发送和接收消息的中间件。它们提供诸如恢复、保证交付、允许您横向扩展(通过使用多个接收器 C# 程序)等内容。您可以查看它们。

如果您太担心套接字的性能,您可以使用某种进程间通信,其细节取决于操作系统。诸如共享内存、管道等。通常所有这些,包括套接字,都足够快,以至于您在正常的日常使用中不会注意到太大的差异。只有在非常高的速率下,差异才会明显。

您还可以查看内存数据库中的内容。 PHP将其写入内存数据库; C# 程序读取内存中的 DB

【讨论】:

  • 没错!我担心的是socket的性能。我将研究内存数据库。这对我的系统来说似乎很好。
猜你喜欢
  • 2014-11-05
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 2012-06-24
  • 1970-01-01
  • 2011-11-15
相关资源
最近更新 更多