PHP Mongo 从套接字读取错误

标签 php mongodb

最近几天,我的错误日志中充满了这个错误:

send_package: error reading from socket: The socket is closed

我真的不知道这是从哪里来的。看起来我的 MongoDB 服务器没有打开 TCP 套接字,但我真的只是在猜测。

有没有人以前见过这个错误或知道如何处理它?<​​/p>

产生错误的行是:

$mongo = new Mongo("mongodb://user:pwd@host/db",array('timeout'=>6000));

我偶尔也会从 Pimple DIC 进入:

    class HurstDI extends \Pimple
    {
        public function __construct(){
            $this['mongoUser'] = 'user';
            $this['mongoPwd'] = 'pwd';
            $this['mongoHost'] = "host/db";
            $this['mongoTimeout'] = 6000;
            $this['mongodb'] = function($c){
            return new \MongoClient("mongodb://{$c['mongoUser']}:{$c['mongoPwd']}@{$c['mongoHost']}");
        };
    }
    }

最佳答案

有一个known issue使用 PHP/mongoclient + Apache + MongoDB,其中无效的持久连接由 Apache 进程保持打开状态。

尝试重新启动您的 Apache 网络服务器。

发生的事情是:

  • Apache 在正常请求期间打开到您的 MongoDB 服务器的连接。
  • 据推测,在某个时候您已经重新启动了 MongoDB 服务器
  • Apache/PHP 永远不会意识到连接在 MongoDB 重启期间关闭,并保持之前打开的持久连接

解决此问题的唯一方法是重新启动 Apache(强制它终止所有工作线程并创建新连接)。

让我知道这是否适合您。

关于PHP Mongo 从套接字读取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14249768/

相关文章:

php - 使用 php 在两个 Debian 服务器之间复制文件

php - 动态构建表单

MongoDB 的 Java 驱动程序 : Can't resolve function toJson()

javascript - 我们如何根据 mongoDB 数据增加语义 UI 进度条?

php - 临时允许查看照片和相册

php - 带有过多嵌套字符串引号的 Post 参数

php - 为什么在 XAMPP Linux 上使用带有 PHP 的 mkdir 时出现权限被拒绝错误

java - 创建 mongodb 健康检查(在 dropwizard 中)

node.js - 当我在线部署应用程序时,Heroku 会崩溃,但在我的本地计算机上它可以正常工作,没有错误

javascript - Mongoose - 无法调用方法 'findOne'