php7 升级之mongodb扩展

2020年06月25日 · Linux · 技术帮助分享 · 792次阅读

------正---文------

mongo扩展(mongo.so)是一个比较老的扩展,主要用于php5, 建议php5.4之后,使用mongodb扩展,php7已经不支持mongo扩展。( https://www.php.net/manual/zh/mongo.installation.php )
下载地址: https://pecl.php.net/package/mongo
mongo使用说明: https://www.php.net/manual/zh/book.mongo.php

mongodb扩展mongodb.so是目前官方维护的版本,可以直接使用该驱动,但是官方建议和phplib一起使用,phplib封装了一个功能更全面的API.
下载地址: https://pecl.php.net/package/mongodb
PHPLIB地址: https://github.com/mongodb/mongo-php-library
使用方法: http://php.net/manual/en/set.mongodb.php

升级注意事项:

mongodb只有长连接

mongo扩展只有close()方法,为了避免出现长连接数过多,请求完调用close方法关闭连接,使用mongodb扩展后,默认使用长连接,且没有close方法,所以迁移时要评估改成长连接后的mongodb单台server的连接数,一般是单台php-fpm数量*机器数。

UTF-8编码兼容性问题

如果有非UTF-8编码的数据用mongo扩展可以读出来,用mongodb扩展读可能会抛异常(Detected corrupt BSON data), 这种一方面需要进行数据修复,另一方面需要堵住入口,避免出现此类问题。这种问题一般是在客户端发送的消息\、邮件里有特殊字符导致。
具体参考:https://github.com/mongodb/mongo-php-driver/pull/776

返回值差异

mongodb扩展isAcknowledged返回true不是代表成功,只是标识网络是OK的
mongodb里成功可以根据update,insert,remove具体操作对应的getModifiedCount, getInsertedCount, getDeletedCount等具体数量判断。
mongo update判断更新成功(生效)updatedExisting,但是mongodb 判断update是否成功建议用getMatchedCount,不能用getModifiedCount。举例,如果更新的内容并没有导致变化,updatedExisting返回1,getModifiedCount返回0,getMatchedCount返回1。


转自:

https://www.clarkhu.net/?p=4119


------结---束------

推广:AI工具网 | 专注人工智能工具推荐!
『静谧星河』采用《署名-相同方式共享 4.0 国际》进行许可。如需转载请保留本文地址。
本文地址:
https://www.yuvin.cn/Linux/487.html
AD

支持我

教程帮助解决方法LinuxCentos

静谧星河最后编辑于4年前


因本站不提供交互式服务,评论均需审核后显示,敬请谅解。

添加新评论

captcha

请输入验证码