1

我正在使用 Predis 将我的 PHP 会话数据存储在 Redis 中。

我的网站有页面可以进行多个 ajax 调用,每个页面都将通过连接到 Redis 会话存储以查找会话变量在 PHP 中进行身份验证。

我收到零星的 500 错误,我认为这可能是因为我的 PaaS 只允许 6 个并发 Redis 连接。我认为这是因为当我进行> 6 个并发 ajax 调用时,它最常发生。

这是典型的错误:

[2013 年 7 月 26 日星期五 17:25:53] [错误] [客户端 10.0.64.59] PHP 致命错误:未捕获的异常 'Predis\Connection\ConnectionException' 并带有消息 'Error while writing bytes to server [tcp://10.0. 27.46:5058]' 在 /mnt/var/vcap.local/dea/apps/funnelplus-reports1-3-7416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/AbstractConnection.php:139\n堆栈跟踪:\n#0 /mnt /var/vcap.local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/StreamConnection.php(189): Predis\Connection\AbstractConnection->onConnectionError('写入时出错... ')\n#1 /mnt/var/vcap.local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/StreamConnection.php(294): Predis\Connection\StreamConnection->writeBytes ('*4??$5??SETEX??...')\n#2 /mnt/var/vcap.local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/AbstractConnection.php(119): Predis\Connection\StreamConnection->writeCommand(对象(Predis\Command\StringSetExpire))\n#3 /mnt/var/vcap.local/dea/apps/funnelplus-reports1 在 /mnt/var/vcap.local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d /app/_includes/Predis/Connection/AbstractConnection.php 第 139 行,引用者:local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/AbstractConnection.php 在第 139 行,引用者:local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/AbstractConnection.php 在第 139 行,引用者:http://www.domain.com/funnels?funnel=8

有没有办法强制 Predis 将这些排队而不是简单地抛出 500,或者有更好的方法来验证这些 ajax 调用?

我将 Redis 用于会话,因为该应用程序在多个实例之间进行了负载平衡。

4

0 回答 0