json对象与js数组

js中的数组要以下标0开始递增的格式才会被认为是数组, 否则就认为是对象.

场景: PHP需要重新组建数组的时, 遍历要以 $i = 0, ++$i; 以$i为索引.

tip: js 中对象没有length属性.

//js 获取对象个数
function getJsonLength(jsonData){

    var jsonLength = 0;

    for(var item in jsonData){

    jsonLength++;

    }

    return jsonLength;

}

[已解决]使用docker-compose编排启动后, 服务需求增加, 是否可以不所有的服务重启?

编排了 php、nodejs、mysql、nginx 四个服务. docker-compose up -d启动.

现在php的镜像需要增加8080端口,在docker-compose.yml修改好并所有重启. docker-compose down docker-compose up -d

上面的场景是每次修改dockerfile或docker-compose.yml都是要启动所有的服务.

有没有方式可以只重启修改的部分并加载那部分的yml配置?


解决

再次执行docker-compose up -d

查阅文档: https://docs.docker.com/compose/reference/up/

[整理中]PHP基础

PHP各版本差异

赋值与引用赋值 引用是不是不占空间

第1章 PHP概述
第2章 变量
第3章 HTML表单和PHP
第4章 使用数值
第5章 使用字符串
第6章 控制结构
第7章 使用数组
第8章 创建Web应用程序
第9章 cookie和session
第10章 创建函数
第11章 文件和目录
第12章 数据库介绍
第13章 将所有的组合在一起

[转]数据库外键

外键是否采用看业务应用场景,以及开发成本的,大致列下什么时候适合,什么时候不适合使用:

  1. 互联网行业应用不推荐使用外键: 用户量大,并发度高,为此数据库服务器很容易成为性能瓶颈,尤其受IO能力限制,且不能轻易地水平扩展;若是把数据一致性的控制放到事务中,也即让应用服务器承担此部分的压力,而引用服务器一般都是可以做到轻松地水平的伸缩;

2.传统行业
1>.软件应用的人数有限,换句话说是可控的;
2>.数据库服务器的数据量也一般不会超大,且活跃数据有限;

综合上述2句话描述,也即数据库服务器的性能不是问题,所以不用过多考虑性能的问题;另外,使用外键可以降低开发成本,借助数据库产品自身的触发器可以实现表与关联表之间的数据一致性和更新;
最后一点,使用外键的方式,还可以做到开发人员和数据库设计人员的分工,可以为程序员承担更多的工作量;

为何说外键有性能问题:
1.数据库需要维护外键的内部管理;
2.外键等于把数据的一致性事务实现,全部交给数据库服务器完成;
3.有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源;
4.外键还会因为需要请求对其他表内部加锁而容易出现死锁情况;

数据库的诸多设计,帐号,权限,约束,触发器,都是为 C/S 结构设计的,是以 C 端不可信做为假设前提的。B/S 模式安全边界前移到 web 服务层,应用与数据库之间是可信的,应用自行完成这些功能更加灵活。所以能不用就不用。

以上内容转自知乎-大家设计数据库时使用外键吗