一些总结
1.本地IP$_SERVER['REMOTE_ADDR'] 服务器端IP$_SERVER['HTTP_HOST']
2.对于大流量的网站,您采用什么样的方法来解决访问量问题?
确认服务器硬件是否支持当前流量,用nginx作为服务器实现负载均衡,数据库读写分离,搭建主从、主主服务器,优化数据表、优化查询语句,程序功能规则、防止外部盗链、控制大文件的下载
3.require和include的区别,为避免多次包含同一文件,可用(?)语句代替它们
require是无条件包含,如果在一个流程内加入require,无论引入成功与否都会先执行require
include有返回值,require 没有
包含文件不存在时,require会返回一个致命的错误,而include会继续执行
require_once include_once
4.如何修改session的生命周期。
session_set_cookie_params()
5.http状态码。
200:请求成功。
301:页面已永久重定向
303:查看其它地址
304:所请求的资源未修改
403:服务器已拒绝请求
404:服务器无法找到页面
500:服务器内部错误,无法完成请求。
6.php中传值和传引用的区别。
按值传递:函数范围内任何改变在函数外部都会被忽略。
按引用传递:函数范围内任何改变在函数外部也能反映。
按值传递时,必须复制值,在值的长度较长时,会影响效率。按引用传递时,不需要复制值,对于性能提高有好处。
7.写一个函数,统计文件夹下所有文件的大小。
答:
function dirSize($path){
//2.打开目录
$resource = opendir($path);
//定义一个统计大小的变量
$count = 0;
//3.读取目录
while($file = readdir($resource)){
//过滤特殊目录
if($file=="." || $file==".."){
continue;
}
//拼接完整的文件路径
$filename = rtrim($path,"/")."/".$file;
//判断是不是一个文件
if(is_file($filename)){
$count+=filesize($filename);
}
//判断是不是一个目录
if(is_dir($filename)){
$count += dirSize($filename);
}
}
//4.关闭目录
closedir($resource);
//返回统计目录的大小
return $count;
}
8.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
先用2根绳子,其中1根一头点火,另1根两头点火,当第2根烧完的时候(即半小时),把第1根的另一头也点火,则当第1根烧完的时候,时间为45分钟;再另外用第3根绳子两头同时点火,烧完为30分钟,加起来为1小时15分钟.
9.8个铁球,中间有一个是空心的,请问用天平称最少几次称出?那18个呢?
把8个铁球编号为1到8.
在天平两边个放上3个.1到6号,如果相等 那么再把7、8号放上,即可
如果1到6号不相等.1.2.3号或是4.5.6号 把1.2号放上,即可 ,如果是4.5.6号照做即可.
所以8个铁球只用2次称.
18个铁球,也按号1到18号
先拿出17.18号
一边各放8个铁球.如果1到8号和9到16号相等,那17.18称一次即可.只需两次
如果不相等 责排除17.18 在1到8号 或是9到16号中 余下就按照上面的8个做法来做.
则需要三次.
10.什么是面向对象?主要特征是什么?
面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。
主要特征:封装、继承、多态
11.date_default_timezone_set();设置默认时区
12.开启php错误报告的方法。
display_errors = On
13.
function myfunc($argument)
{
echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable)=".myfunc($variable);
结果为:20myfunc(10)=
14. php开发接口
目录结构:App 项目目录
Config 配置目录
Core 核心目录
15.php的闭包。
闭包是引用了自由变量的函数,这个被应用的自由变量将和这个函数一同存在,即使离开了创建它的环境也一样,所以闭包也可认为是有函数和与其相关引用组合而成的实体。
在一些语言中,在函数内定义另一个函数的时候,如果内部函数引用到外部函数的变量,则可能产生闭包。
16.数据库优化。
选取合适的字段:长度尽可能小、数字>时间>枚举>字符串,尽量不要使用null类型。
数据库分库分表。
数据库读写分离,搭建主从主主服务器
中文分词 scws
三范式标准:原子性、无冗余性、唯一性
使用JOIN连接代替子查询
使用UNION来代替手动创建的临时表
多个语句后面跟一个UNION
使用事务处理
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8;', 'root', '');
$pdo -> beginTransaction();
$num1 = $pdo->exec();
if (!num1){$pdo->rollback();}
$pdo->commit();
锁定表
LOCK TABLE inventory WRITE SELECT Quantity FROM inventory WHERE Item='book';
UPDATE inventory SET Quantity=11 WHERE Item='book';UNLOCKTABLES
使用外键
使用索引
优化查询语句
首先,最好是在相同类型的字段间进行比较的操作
其次,在建有索引的字段上尽量不要使用函数进行操作
最后,避免使用like关键字
17.sql语句优化
避免全表扫描,在where及order涉及的列上建立索引。
应尽量避免判断null值。
应尽量避免在where子句中使用!=和<>操作符,否则将放弃索引而进行全表扫描。
应尽量避免在where子句中使用or来连接条件
谨慎使用in和not in
能用between就不要用in
用exist代替in
应尽量避免使用like关键字
应尽量避免在where子句中对字段进行函数操作
数据量大的表使用join,要先分页在join
避免频繁创建和删除临时表。