php cookie读不出来_2019百度PHP工程师复试面经题目(含答案)分享

819fa98d94dee5c3bafe4d444456626c.png

4cb8dcb7ce3663a7d214d27b6668d06d.png

1.Redis秒杀实现?

redis队列解决抢购高并发的原理:
在程序跟数据库之前呢我们可以利用redis队列做一个缓冲机制,让所有用户的请求进行排队,禀行先进先出的原则(redis中的lpush和rpop),


lpush程序是把用户的请求压入redis队列,然后用rpop做一个守护进程来取队列中的数据,按规定的抢购名额写好,


把所有抢购成功的用户写入redis并且生成订单,在lpush程序中查看中奖的用户并且给用户及时提醒抢购结果!

9dc755002bbf5698c5d9c4e1ae6eb02a.png

2.服务器定时器实现,crontab 、crontab -e区别,死循环如何结束?

4f1ff5c87b87776edebe2da79d8791e1.png
第一种:在/etc/crontab下设置,指定用户名的
1、vim命令进入/etc/crontab
2、在最后一行加上
59 23 * * * root /root/catina/rm_8080lina.sh
3、重启crontab,使配置生效
第二种:直接用crontab -e,不需要指定用户
1、crontab -e进入
2、:wq退出保存
3、查看上面那个脚本是否有执行权限
4、还要看脚本里面的涉及的操作文件是否有权限
5、重启crontab,使配置生效 

1.使用ctrl-c跳出死循环
2.ps -ef|grep 名称 查询进程号
3.kill 进程号

4.获取HTTP头文件

1获取全部(客户端)HTTP请求头信息
    #1 array apache_request_headers(void)
    #2:通过$_SERVER获取,每个http请求头信息都以"HTTP_"开头,在$_SERVER键中获取if_modified_since的请求信息
    $_SERVER['HTTP_IF_MODIFIED_SINCE']
 
2获取服务器响应一个HTTP请求所发送的所有标头array get_headers(string $url [, int $format = 0 ] )
  # url 请求的服务器的URL地址 # format 0:返回的头部信息以索引数字形式,1:返回头部信息以关联数组形式 
  $head_arr = get_headers("https://www.baidu.com"); 
  $head_arr_index = get_headers("https://www.baidu.com",1);

5.Nginx负载均衡实现,有几种方式?

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
    server 192.168.0.14;
    server 192.168.0.15;
}
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的 
情况。
upstream backserver {
    server 192.168.0.14 weight=3;
    server 192.168.0.15 weight=7;
}
权重越高,在被访问的概率越大,如上例,分别是30%,70%。
3、ip_hash
上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个(对应的)后端服务器,后端服务器为缓存时比较有效。 

6.Nginx.conf rewrite里末尾符号问题 /path/to/photos /path/to/photos/区别?

当Web服务器接收到对某个末尾不含斜杠的url请求时,
例如:xx.com/product,这时服务器会搜索网站根目录下有没有名为“product”的文件,如果没有就把product当做目录处理,然后返回abc目录下的默认首页。
当Web服务器接收到的是末尾带斜杠的请求时就会直接当做目录处理。为了语义明确。当然现在很多应用程序是路由重写路径的。 

7.cookie会话攻击防护?

什么样的Cookie信息可以被攻击者利用
1. Cookie中包含了不应该让除开发者之外的其他人看到的其他信息,如USERID=1000,USERSTATUS=ONLINE,ACCOUNT_ID=xxx等等这些信息。
2. Cookie信息进行了加密,但是很容易被攻击者进行解密
3. 在对Cookie信息的时候没有进行输入验证
如何防范利用Cookie进行的攻击
1. 不要在Cookie中保存敏感信息
2. 不要在Cookie中保存没有经过加密的或者容易被解密的敏感信息
3. 对从客户端取得的Cookie信息进行严格校验
4. 记录非法的Cookie信息进行分析,并根据这些信息对系统进行改进。
5. 使用SSL/TLS来传递Cookie信息

8.PHP常用函数并说明?

9.PHP扩展文件安装过程?

phpize安装
//下载libevent扩展文件压缩包(在当前系统哪个目录下载随意)
~# wget http://pecl.php.net/get/libevent-0.1.0.tgz
//解压文件
~# tar -zxvf libevent-0.1.0.tgz
//进入源码目录
~# cd libevent-0.1.0/
如 /usr/local/php7/bin/phpize //运行phpize命令,写全phpize的路径
~# ./configure --with-php-config=/usr/local/php/bin/php-config
//运行configure命令,配置时 要将php-config的路径附上
~# make
~# make test
~# sudo make install
//修改php.ini,结尾加入:extension=libevent.so
//重启对应的php-fpm
 

10.一个客户端http请求从服务器server到nginx到php响应返回整个流程?

HTTP 事务执行过程
 
客户端(浏览器)做出请求操作(输入网址、点击链接、提交表单)。
客户端对域名进行解析,向设定的 DNS 服务器请求 IP 地址。
客户端根据 DNS 服务器返回 IP 地址采用三次握手与服务端建立 TCP/IP 连接。
TCP/IP 连接成功后,客户端向服务端发送 HTTP 请求。
服务端的 Web Server 会判断 HTTP 请求的资源类型,进行内容分发处理;如果请求的资源为 PHP 文件,服务端软件会启动对应的 CGI 程序进行处理,并返回处理结果。
服务端将 Web Server 的处理结果响应给客户端
客户端接收服务端的响应,并渲染处理结果,如果响应内容需要请求其他静态资源,通过 CDN 加速访问所需资源。
客户端将渲染好的视图呈现出来并断开 TCP/IP 连接

未完待续——资料分享

包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货

适合1-5年PHP开发者学习,需要获取请点击这里

ef381eaa466638c048626b2c8aad6c55.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值