原创

php开发基于mongodb数据库的字段类型问题

比如下面的数据结构

{
    'field_1': 1,
    'field_2': '1',
    'field_3': true
}

在脚本语言里,这三个值是相等的,但mongodb可不这样认为,如果你用string类型去寻找field_1的值,那么永远找不到。

可是像在php这种弱类型语言里,本来就是string,int傻傻分不清楚,所以使用mongodb的php程序员经常会出现以下杯具场景,你存储的时候主键是一个用函数生成的int型数字,但取出记录的时候可能直接使用前端传递过来的GET参数,很不巧它只能是一个string类型,这样你就永远找不到这条记录了。

解决以上问题,我觉得一开始就用php7的标量类型约束,最好启用严格模式是个好习惯,这样类型不对了,能有个提示,你就可以进行类型转换了。

 

转载请注明:http://blog.p2hp.com/archives/4708…

Nginx开启网站HTTPS 访问 –申请Let’s Encrypt免费SSL证书过程及常见问题

Let’s Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。

Let’s Encrypt免费SSL证书的出现,也会对传统提供付费SSL证书服务的商家有不小的打击。到目前为止,Let’s Encrypt获得IdenTrust交叉签名,这就是说可以应用且支持包括FireFox、Chrome在内的主流浏览器的兼容和支持,虽然目前是公测阶段,但是也有不少的用户在自有网站项目中正式使用起来。…

EMQTT启用密码认证

EMQTT启用密码认证

权限认证

修改etc/emq.conf中:

mqtt.allow_anonymous = true 改为 false

启用 用户名密码认证

基于MQTT登录用户名(username)、密码(password)认证。

etc/plugins/emq_auth_username.conf中配置默认用户:

auth.user.$N.username = admin
auth.user.$N.password = public
启用`emq_auth_username`_插件:

./bin/emqttd_ctl plugins load emq_auth_username
使用’./bin/emqttd_ctl users’命令添加用户:(可选)
$ ./bin/emqttd_ctl users add <Username> <Password>

 

更进一步 还可以定义ACL访问控制规则:

规则定义在etc/acl.conf。

注:改了密码后,原来的密码还能用,需要删除emqtt的数据库 (bug)…

PHP Socket 编程示例

<?php
 
//php socket 客户端编程
// 建立一个socket并连接
 
//选项 SO_REUSEADDR¦SO_REUSEPORT¦TCP_NODELAY¦SO_RCVTIMEO¦SO_SNDTIMEO
//SO_REUSEPORT 端口重用 linux kernel >3.9
//SO_RCVTIMEO 接收数据超时
//SO_SNDTIMEO发送数据超时
//设置socket选项
 
//$host = "34.56.33.33";
$host = "192.168.6.156";
$port = "1883";
$timeout = 2; //连接超时/秒
 
Page 1 of 912345...Last »