2019最新整理PHP面试题附答案( 四 )

39、在命令行中运行php程序
php indx.php
A、从命令行运行php非常简单 。但有些注意事项需要各位了解下,诸如$_SESSION之类的服务器变量是无法在命令行中使用的,其他代码的运行则和web服务器中完全一样;
B、在命令行中执行php文件的好处之一就是可以通过脚本实现一些计划任务(crontab)的执行,而无须通过web服务器 。
延伸1:
php -v 显示当前PHP版本
php -m 显示当前php加载的有效模块
php -i 输出无html格式的phpinfo
php --rf function
延伸2:向php脚本传递参数:
提示:命令行下执行php,是不走Apache/Nginx等这类东西的,没有什么http协议,所以get,post传参数根本不起作用,并且还会报错 。有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务 。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参 。
A、使用$argv or $argc参数接收
echo "接收到{$argc}个参数";
print_r($argv);
【2019最新整理PHP面试题附答案】?>
B、使用getopt函数
$param_arr = getopt('a:b:');
print_r($param_arr);
?>
C、提示用户输入
fwrite(STDOUT,'Please enter your name:');
echo 'Your name is:'.fgets(STDIN);
?>
40、你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?
A、PHP脚本的执行效率
a、代码脚本里计时;
b、xdebug统计函数执行次数和具体时间进行分析,最好使用工具winCacheGrind分析;
c、在线系统用strace跟踪相关进程的具体系统调用 。
B、数据库SQL的效率
a、sql的explain(MySQL),启用slow query log记录慢查询;
b、通常还要看数据库设计是否合理,需求是否合理等 。
41、对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题 。
A、确认服务器是否能支撑当前访问量;
B、优化数据库访问;
C、禁止外部访问链接(盗链), 比如图片防盗链;
D、控制文件下载,尤其是大文件;
E、使用不同主机分流(负载均衡);
F、使用浏览统计软件,了解访问量,有针对性的进行优化 。
42、 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
A、设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率;
B、选择合适的表字段数据类型和存储引擎,适当的添加索引;
C、mysql库主从读写分离;
D、找规律分表,减少单表中的数据量提高查询速度;
E、添加缓存机制,比如memcached,redis等;
F、不经常改动的页面,生成静态页面;
G、书写高效率的SQL 。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE 。
43、Mysql的存储引擎,myisam和innodb的区别 。
A、MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持;
B、MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快;
C、InnoDB不支持FULLTEXT类型的索引;
D、InnoDB中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可;
E、对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引;
F、DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除;
G、LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用;
H、MyISAM支持表锁,InnoDB支持行锁 。
MyISAM:成熟、稳定、易于管理,快速读取 。一些功能不支持(事务等),表级锁 。
InnoDB:支持事务、外键等特性、数据行锁定 。空间占用大,不支持全文索引等 。
作者:个推Anne
 




推荐阅读