PHP面试问题总结

垃圾回收机制

每个 PHP 变量存在一个叫 zval 的结构体中,除了包含变量类型和值,还包括 is_ref (=true 指针变量,-false 普通变量),refcount (指向这个变量的个数), 当删除元素导致 refcount=0 时,这个变量被垃圾回收机制删除

以下操作会导致 refcount 永远不为 0, 可能导致内存溢出

$a = array( 'one' );
$a[] =& $a;
unset($a);

每当 refcount 减一的时候,变量放到跟缓存区,等待周期回收处理,每当根缓存区存满时 (默认 10000),就会执行回收算法

FPM 调优

pm = dynamic : 灵活模式,子进程的数量是根据以下指令来动态生成的,默认是这个模式:
pm.max_children,//最大子进程数
pm.start_servers,//初始化启动进程数
pm.min_spare_servers,//最低闲置进程数
pm.max_sqare_servers//最高闲置进程数

pm = ondemand: 死鱼模式,这个模式只有请求来了之后才会启动子进程,几乎每次都要等待一次启动worker的时间,比较适合虚拟主机模式,pm.process_idle_timeout秒后杀掉子进程

pm = static: 最大马力模式,子进程的数量是由pm.max_children指令来确定的,一直以最大子进程运作,很耗内存,但是反应贼快,服务器内存贼大的可以用这个,如果你服务器有8G以上,一个进程按20M算,100个进程加起来才2G

日志 多写点日志准没错

慢日志

slowlog = /usr/local/var/log/php-fpm.log.slow
request_slowlog_timeout = 15s

错误日志

error_log =  /usr/local/var/log/php-fpm.log

访问日志

access.log = log/$pool.access.log
OPCACHE 代码=>AST抽象语法树=>生成opcode缓存 之后还可以优化
opcache.enable=1    //默认关闭
opcache.memory_consumption=512//最大内存空间,单位MB
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=32531//缓存脚本数量
opcache.validate_timestamps=0//0不校验文件变动,文件改动,需要手动清除opcache
opcache.validate_timestamps=0//1校验文件变动,
opcache.revalidate_freq=10 //校验文件的时间间隔
opcache.save_comments=1//保留注释,?注解要用到?
opcache.fast_shutdown=0
##PHP7.4+ 预加载文件
opcache.preload=/home/rawphp/preload.php
opcache.preload_user=odin

CGI 、FASTCGI 、 PHPFPM 、 PHPCGI

CGI 是个协议,规定服务器传输给动态脚本数据格式的协议

FASTCGI 提高CGI的性能,启动一个master进程,解析php.ini文件,请求过来的时候直接复制一个worker进程出来,立即可以处理请求,而且也可以预先启动pm.start_servers个worker等操作提高性能

PHPFPM 是一个实现了FASTCGI的程序

PHPCGI 只是一个CGI处理程序 简单解析请求返回结果,没有进程管理等高级功能.

以上就是新鲜的一轮PHP面试问题总结的详细内容,更多请关注亿码酷站其它相关文章!



新鲜的一轮PHP面试问题总结
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除

下载声明:
  • 本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压;
  • 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。
  • 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版!
  • 版权声明:
  • 下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。
  • 免责声明:
  • 您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!