gpt4 book ai didi

php - Php和Redis之间的高流量连接

转载 作者:可可西里 更新时间:2023-11-01 11:33:54 24 4
gpt4 key购买 nike

我有 php 后端,可与 Redis 配合使用。

但是当请求增加并且每秒超过 2000 个请求时,我会收到错误消息:

99 - Cannot assign requested address

TIME_WAIT 中的所有套接字。


连接示例:

$this->_socket = @stream_socket_client(
'tcp://' . $this->hostname . ':' . $this->port,
$errorNumber,
$errorDescription,
ini_get('default_socket_timeout'),
STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT
);

我找到解决方案:http://redis4you.com/articles.php?id=012&name=redis

但是/proc/sys/net/ipv4/tcp_tw_recycle 我无法在 1 中设置。不想在应用程序和 Redis 之间的网络上丢失数据包。

PHP 根据来自 API 的新请求创建一个新套接字。

有什么想法吗?

最佳答案

我不知道你的整个设计,但这里你可以做一些事情:

  • 创建一个始终运行的 PHP 页面(使用 while(true) 循环)
  • 此页面将等待您的初始页面(套接字代码之前所在的位置)的内容
  • 使用流水线技术,您可以使用同一个套接字发送所有请求。
  • 唯一缺少的是如何将数据从初始页面传递到这个新页面。

对于最后一部分,我看到了多种解决方案(但不确定它们是否都有效):

  • 使用 APC 从初始页面存储数据,并仍然使用它从新页面获取数据。
  • 在新页面中创建一个 SESSION,它将有两种模式:处理、提交。然后,您应该在初始页面内使用本地服务器调用此页面。

在这两种解决方案中,这个新页面的一个实例应在本地执行,以便激活“处理/等待”。

关于php - Php和Redis之间的高流量连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37926527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com