php项目执行流程

项目优化的方向

1.一个较大的项目,用户量为1000w,预计文章总数10亿,每天至少10w跟新量,每天访问5000w,对数据的读写操作比例超过10:1,如何设计?

数据库的设计:
1.存储引擎的选择,若项目需要事务,则选innodb,否则选myisam
2.字段尽量精简,列类型适中,切记使用一个较大的数据类型存储一个较小的数据导致空间的浪费,以char代替varchar,以tinyint代替枚举,以逗号分

隔的id字符串代替集合,以整形存储iP,以整形存储时间戳等等
3.使用缓存,例如redis,memcache等来减少数据库的连接
4.合理建立索引
5.单表数据量过大,则可以分区分表,使用水平分隔或者垂直分隔将数据表内容一分为多,减少数据库的压力,自己写规则,建一个中间表来实际存储多

表的id字段,数据的写入和查询按照自己的规则判断存入的表和读取的表
6.数据表实现主从复制读写分离,分布式存储,主服务器写入,从服务器查询。在主服务器的配置文件中,开启二进制日志,
log-bin=mysql-bin指定二进制日志存储的名称
binlog_format=mixd指定二进制日志存储的类型
server-id=128指定一个id,唯一即可
主服务器写入的时候,二进制日志记录了主服务器sql语句以及对数据表操作的语句,但从服务器想访问主服务器的二进制日志,需要主服务器的授权用

户密码,通过主mysql服务器的
grant replication slave on . to lican@”192.168.%.%” identified by ‘520’;
再查看主服务器的状态 show master status 得到当前二进制文件的文件名和position节点

从服务器通过客户端命令change master to

master_host=”192.168.124.128”,master_user=”lican”,master_password=”520”,master_log_file=”mysql-bin-000010”,master_log_pos=245
从mysql服务器连接的主服务器的二进制日志文件,将其内容sql语句跟新到自己的数据库数据表中,所以实现了从服务器与主服务器数据表的结构和数据

一样

系统框架:实现负载均衡,一台web服务器实现前台请求的分发,多台web服务器处理请求

网络架构:

分布式存储(分表存储):就是将数据存放到多个服务器数据库下的数据表中,以减小单台mysql服务器的压力
负载均衡:多台执行请求的服务器集群
主从复制:两台或多台服务器的数据一模一样,只是主表写入,从表读取

1.1、PHP项目执行流程

对于上述的流程图中每一个执行的节点都有可能存在性能问题
1.2、优化方案
1.2.1、客户端发送请求的性能问题
1、资源多。资源减少,CDN技术、延迟加载技术等
2、网络问题。服务器可以使用多线路的方式
1.2.2、web服务器解析的性能问题
Web服务器解析比较缓慢的可能因素
1、代码不够优化,优化代码
2、PHP引擎的性能,可以选择合适的版本
3、缓存编译之后的结果
1.2.3、MySQL的性能问题
1、MySQL本身不能承受太多的并发,使用集群
2、数据量比较大查询会缓慢。使用分布式存储
3、SQL语句不合适
4、数据表设计不规范
1.3、优化可用技术
1.3.1、现有技术
可以使用负载均衡解决web问题
1.3.1、可以使用的技术
1、网站开发中尽量使用较小的资源文件
2、使用压缩技术(gzip)
3、使用cdn加速资源文件
4、使用缓存技术(内存缓存redis/memcache/页面静态化)
5、对数据库进行优化
6、网站架构重构采用分层模式设计
7、使用负载均衡技术
8、数据库使用读写分离或者分布式技术
9、对相关软件配置进行优化
10、升级硬件

你可能感兴趣的:(php)