PHP 面试知识梳理

核心技术概览
本文探讨了域名解析、Memcache缓存机制、多文件上传配置、Socket与HTTP连接的区别、UTF-8验证方法、PHP Session管理、多进程文件写入同步等关键技术。

1.域名与IP的区别

虽然域名方便记忆,由于服务器只能识别二进制的IP地址,所以我们在用某域名去访问某主机的时候,服务器会将其自动解析为对应的IP地址,

我们将这一行为称之为域名解析。反之,IP地址解析为域名,我们称之为域名反解析。俗话说,域名就相当于IP地址的一个独一无二且华丽的

面具。

2.memcache的原理,以及memcache是否能够缓存2M的数据

memcache是一个高性能的分布式的内存对象缓存系统,它是用过将数据库中的数据采用memcache缓存,当我们再次调用数据的时候,我们

只需要取出缓存中的数据,这样会大大的提升程序的工作效率,memcache可以缓存视频,文件,图片等,并且memcache最多可以缓存30天,

哪怕设置缓存时间为永久,缓存时间也会变成30天。还有就是memcache的最大健长为250,大于的话无法进行缓存,单个value的大小,不能

大于1M,否则的话也是无法进行缓存的。还有就是最大的连接数为200,最大的软连接数为1024,。memcache的优点是:

memcached是一种无阻塞的socket通信方式服务,基于libevent库,由于无阻塞通信,对内存读写速度非常之快。

3.能够实现多文件上传 文件下载,Php.ini所需配置参数:

需要修改上传的最大时间、上传的默认路径、上传的最大文件的大小、单次上传的最多数量、是否开启http文件上传权限、是否开启文件上传

max_input_time = 60      upload_tmp_dir =     upload_max_filesize = 2M   max_file_uploads = 20    file_uploads = On是否允许HTTP文件上传。默认值为On允许HTTP文件上传,此选项不能设置为Off          file_uploads = On

4.socket连接和http连接的区别

http连接属于短连接,每次客户端访问服务器完成之后,就会立马断开。

socket连接属于长连接,理论上服务器与客户端连接上之后一般是不会断开的,除非有一方挂掉了,还有就是客户端很长时间不与服务器发起

请求,还有就是网络原因,以及网络防火墙的开启都会造成长连接的断开。

Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,才能使用TCP/IP协议。

tcp协议: 对应于传输层  ip协议: 对应于网络层

HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的。

5.怎么验证字符串是否为utf-8

首先验证字符串是否为utf-8,可以有三种方式去证明,

一种是用ord函数,因为ord是获取字符串的首位的字符集,所以我们要采用循环。

第二种是采用mb_detect_encoding函数去查该字符串是否为utf-8

第三种是采用正则匹配,然而匹配字符串的正则应是:/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u

6.写出 echo '1'.print(2)+3的运行结果

结果为:511

原理是:我试验过,prin(2)输出的是两位数字21,我多次试验,如果我换成prin(5),输出的结果就是51。虽然我到现在都不明白其中的原理,但是我想程序不会骗人的

所以我认为如果用print的话,括号里面是数字的话就会输出该数字后面拼上1,然后+3,如果后面加的是一位整数,它就会与print出来的整数的第二位的数字相加,会把最后一位忽略掉,最后那么1.,也就是拼接上,这个运算属于倒序的,所以在算出来的数字最后面拼上1,所以结果为511.

7.php session默认有效时间是多长?如何设置这个存活时间?

在php.ini中,修改session.gc_maxlifetime = “”

就是session_id在cookie中存活的默认有效时间。当然前提还有就是开启session_id存到cookie中,session.use_cookies把这个的值设置为1,

还有就是session.gc_maxlifetime这个是Session数据在服务器端储存的时间

8.什么是域名?

域名相当于门牌号,全球的域名没有一个重复的,域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址上有“面具” 。一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称,世界上第一个注册的域名是在1985年1月注册的。

9.如何实现多进程安全的写入一个文件数据 采用flock

文件锁:

用flock在写文件前先锁上,等写完后解锁,这样就实现了多线程同时读写一个文件避免冲突。大概就是下面这个流程 <?php/**flock(file,lock,block)*file 必需,规定要锁定或释放的已打开的文件*lock 必需。规定要使用哪种锁定类型。*block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。*lock*LOCK_SH 要取得共享锁定(读取的程序)*LOCK_EX 要取得独占锁定(写入的程序)*LOCK_UN 要释放锁定(无论共享或独占)*LOCK_NB 如果不希望 flock() 在锁定时堵塞/* $fp = fopen("/tmp/lock.txt", "w+"); if (flock($fp, LOCK_EX)) { // 进行排它型锁定 fwrite($fp, "Write something here\n"); flock($fp, LOCK_UN); // 释放锁定 } else { echo "Couldn't lock the file !"; } fclose($fp); ?>

基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_青涩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值