2019php面试题

 1.echo count("abcd"); 这个语句会输出什么内容?

答:会输出整型 “1”;

count —计算数组长度或对象中的属性个数

int count (mixed$var [, int$mode ] ), 如果 参数var 不是数组类型或者实现了Countable 接口的对象,将返回 1,有一个例外,如果 var 是NULL 则结果是 0。

2.php的构造函数和析构函数?

答:

__construct();//构造函数 __destruct();//析构函数

3.对数据库索引原理的理解。

答:索引的原理

  • 对查询的字段建立索引其实是把该字段按照一定的方式排序;
  • 建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效;
  • 索引太多会降低查询的速度

4.linux下find和grep的区别?

答:find用来查找文件,grep用来查找文字内容

5.大流量网站,采用什么方式解决访问问题?

答:

  • 确认服务器硬件是否足够支持当前的流量。
  • 页面静态化或者缓存,尝试优化数据库的查询SQL.避免使用Select * from这样的语句,避免短时间内的大量SQL查询,索引字段减少函数操作;
  • 禁止外部的盗链。
  • 控制大文件的下载。
  • 使用不同主机分流主要流量
  • 使用流量分析统计软件。
  • 事务处理(事物具有原子性,一致性,隔离性,持久性四大特点)

6.session原理?大型网站session需要注意什么?

答:

session原理

->       代码运行  

->  服务器上产生session文件和与之唯一对应的一个保存在客户端的session_id  

->  内容存储在session文件中  

->  客户端将session_id传递给服务端  

->  服务端根据session_id找到对应的文件读取并反序列化得到session的值

->  保存的时候先序列化再写入。

      Session_id是取得存储在服务器端Session变量的身份证。

大流量session注意:

1、解决Session文件过多,消耗IO性能

  建议:可以更改php.ini的 session.save_handler 参数为redis或memcache等内存缓存数据库。

2、解决Session的同步问题:可能有很多台服务器,用户在A服务器上登录了,种下了session信息,然后访问网站的某些页面没准跳到B服务器上去了,如果这个时候B服务器上没有session信息又没有做特殊处理,可能就会出问题了。

  解决方案:

  (1)更改php.ini的 session.save_handler 参数为redis或memcache等内存缓存数据库

  (2)通过加密的cookie来实现,用户在A服务器上登录成功,在用户的浏览器上种上一个加密的cookie,当用户访问B服务器时,检查有无 session,如果有当然没问题,如果没有,就去检验cookie是否有效,cookie有效的话就在B服务器上重建session。

  (3)在负载均衡那一层保持会话,把访问者绑定在某个服务器上,他的所有访问都在那个服务器上就不需要session同步了(比如负载均衡中的ip_hash)。

转载于:https://www.cnblogs.com/Soren-sblog/p/10593190.html

你可能感兴趣的:(2019php面试题)