##########10.29笔记########################
一、双引号和单引号的区别
前者是解释变量,后者是不解释变量,但尽量使用单引号,因为双引号需要先遍历一遍判断里面是否有变量,然后在进行操作,而单引号不需要判断。
二、常用的全局变量
$_GET、$_POST、$_REQUEST(可以接收到post和get两种方式的值)、$GLOBALS(全部变量放里面)、$_FILE(文件上传使用)、$_SERVER(系统的环境变量)、$_SESSION(会话控制)、$_COOKIE(会话控制)
三、MySQL数据库优化的八大方式(http://www.jianshu.com/p/dac715a88b44)
1、选取最适用的字段属性(以及字段长度要适合)、另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、使用联合(UNION)来代替手动创建的临时表
4、事务处理
作用:
(1)保持数据库中数据的一致性和完整性
(2)事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰。
举例:
BEGIN;
INSERT INTO salesinfo SET customerid=14;
UPDATE inventory SET quantity =11 WHERE
item='book';
COMMIT;
5、锁定表,事务处理优化
有些情况下我们可以通过锁定表的方法来获得更好的性能
举例:
LOCK TABLE inventory WRITE SELECT quantity FROM
inventory WHERE Item='book';
UPDATE inventory SET Quantity=11 WHERE
Item='book';UNLOCKTABLES
6、使用外键,优化锁定表
锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性。这个时候我们就可以使用外键。
注意:MySQL中使用外键,一定要记住在创建表的时候将表的类型定义为事务安全表InnoDB类型。该类型不是MySQL表的默认类型。定义的方法是在CREATE TABLE语句中加上engine=INNODB
7、使用索引
索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候,性能提高更为明显。
注意:
(1)一般说来,索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上。尽量不要对数据库中某个含有大量重复的值的字段建立索引。
(2)对于一个大的数据库,将数据装载到一个没有FULLTEXT索引的表中,然后再使用ALTERTABLE或CREATEINDEX创建索引,将是非常快的。但如果将数据装载到一个已经有FULLTEXT索引的表中,执行过程将会非常慢
8、优化的查询语句
四、模板引擎:Smarty模板引擎
五、解决访问量的问题(大流量网站)
1.确认服务器硬件是否能够支持当前的流量
2.数据库读写分离,优化数据表
3.程序功能规则,禁止外部的盗链
4.控制大文件的下载
5.使用不同主机分流主要流量
六、语句include和require的区别是什么
区别:
require是无条件包含,也就是如果一个流程里加入require,无论条件成立与否都会先执行require,当文件不存在或者无法打开的时候,会提示错误,并且会终止程序执行include有返回值,而require没有(可能因为如此require的速度比include快),如果被包含的文件不存在的化,那么会提示一个错误,但是程序会继续执行下去注意:包含文件不存在或者语法错误的时候require是致命的,而include不是为避免多次包含同一文件,可以用require_once代替,避免重复包含。