php面试相关
FALSE的七种情况
0, 0.0, ' ', '0', false, array(), NULL
超全局数组
$GLOBALS, $_GET, $_POST, $_SERVER, $_REQUEST, $_SESSION, $_COOKIE, $_FILES, $_ENV
$_SERVER['SERVER_ADDR'] 服务器Ip地址
$_SERVER['SERVER_NAME'] 服务器名称
$_SERVER['REQUEST_TIME'] 启动时间
$_SERVER['QUERY_STRING'] url?后边内容
$_SERVER['HTTP_REFERER'] 上级请求页面
$_SERVER['REMOTE_ADDR'] 客户端IP地址
$_SERVER['PATH_INFO'] URL路径部分
NULL三种情况
1. 直接赋值 2. 未定义的变量 3. unset销毁的变量
null + null = 1
常量的定义方式
const更快是语言结构, define是函数
const可以定义类的常量, define不可以
const const 常量名=值; 没有$符
define define('ABC', 123)
预定义常量
__FILE__ 返回文件路径名和文件名称
__LINE__ 所在行号
__DIR__ 所在目录
__FUNCTION__ 所在的函数体
__CLASS__ 所在的类名
__METHOD__ 类名和方法名
__NAMESPACE__ namespace名称
@PHP错误控制符
结果 $a =1, $b = 1
include和require
如果加载文件不存在include发出一条警告程序继续运行
require发出一个致命错误, 停止运行
目录的遍历
魔术方法
__construct() 实例化一个类之前先执行构造方法
__destruct() 在销毁一个类之前执行执行析构方法
__call() 调用一个对象中不存在或被权限控制中的方法,__call 方法将会被自动调用
__get() 读取不可访问属性的值时,__get() 会被调用
__set() 用来设置私有属性, 给一个未定义的属性赋值时,此方法会被触发
__isset() 当在类外部使用isset()函数来测定对象里面的私有成员是否被设定时,就会自动调用类里面的__isset()
__unset() 当删除一个不存在或者权限不够的属性的时候会自动触发
__sleep() 当在类外部使用serialize()时会调用这里的__sleep()方法
__clone() 当对象克隆的时候自动加载此方法
MySQL相关
分析SQL查询慢的方法
第一种、记录慢查询日志 (需要开启),可以使用pt-query-digest工具进行分析
第二种、使用show profile, 需要开启(set profiling), 执行所有的语句会存在临时表中, 然后进行分析
show profiles 显示所有的sql语句耗时
show profile for query 临时表ID (详细查看耗时)
第三种、 explain select * from A ( 分析单条sql语句的使用情况 ) 或者用 desc select * from A 结果是一样的
分区表
创建表时用partition by子句定义每个分区存放的数据
限制:一个表最多只能有1024个分区 , 分区字段中如果有主键和唯一索引列,那么主键列和唯一列都必须包含进去, 分区表中无法使用外键, 所有分区都必须使用相同的存储引擎