Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
PHP面试题汇总_php面试题目,希望能够帮助你!!!。
PHP面试题汇总
注:早期,web浏览器发来的请求由nginx分发给CGI解释器进程处理,每次都要解析php.ini等配置,效率低下;FastCGI进程管理器应运而生,可同时启用多个CGI解释器进程,来等待web端请求;而php-fpm则为FastCGI进程管理器,是一种master(主)/worker(子)多进程架构,与nginx设计风格有点类似,master进程主要负责CGI及PHP环境初始化、事件监听、子进程状态等等,worker进程负责处理php请求。
PHP进程与线程
一文看懂进程五状态、七状态,重点厘清进程的睡眠,阻塞,挂起
php 多进程/多线程操作(多任务操作 pcntl_fork + pthread + parallel)
高并发原理
https://learnku.com/docs/psr
https://zhuanlan.zhihu.com/p/
https://www.cnblogs.com/ganwenjun/p/6914887.html
(1)存储位置:Cookie存储在客户端浏览器中,相对不安全,服务器能够知道其中的信息;Session内容所在文件存储在服务器中,一般在根目录下的tmp文件夹中,相对更安全,客户端不知道其中的信息。
(2)数量和大小限制:Cookie存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie变量数量控制在30个以内,每个cookie值的大小控制在4kb以内。session值没有大小和数量限制,但如果数量过多,会增大服务器的压力。
(3)内容区别:cookie保存的内容是字符串,而服务器中的session保存的数据是对象。
(4)路径区别:session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
(5)session需要借助cookie才能正常工作。如果客户端完全禁止cookie,session将失效。
①主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
②普通索引:仅加速查询
CREATE INDEX index_name ON table_name(col_name);
③唯一索引:加速查询 + 列值唯一(可以有null)
CREATE UNIQUE INDEX index_name ON table_name(col_name);
④全文索引:对文本的内容进行分词,进行搜索
⑤单列索引:单列索引值对应一个字段的索引,可以包括上述的四种索引方式
⑥组合索引:多列索引值组成一个索引,专门用于组合搜索,其效率大于索引合并(遵循最左原则)
CREATE INDEX index_name ON table_name(col_name_1,col_name_2);(普通组合)
CREATE UNIQUE INDEX index_name ON table_name(col_name_1,col_name_2);(唯一组合)
⑦空间索引
ps
①索引合并:使用多个单列索引组合搜索
②覆盖索引:select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖
③修改表建索引:ALTER TABLE table_name ADD INDEX index_name(col_name);
④直接删除索引:DROP INDEX index_name ON table_name;
⑤修改表结构删除索引:ALTER TABLE table_name DROP INDEX index_name;
①like是以%开头的查询语句
②使用多列索引的查询语句,只有查询条件中使用了这些字段中第1个字段时,索引才会被使用(遵循最左原则)
③使用OR关键字查询语句,要想同时使用,必须or上的字段全部都加索引
④如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
⑤不在索引列上做任何操作(计算,函数,(自动或者手动)类型转换),会导致索引失效
⑥使用不等于(!= 或者<>)的时候,无法使用索引,会导致索引失效
⑦使用is not null 或者 is null会导致无法使用索引
⑧如果使用全表扫描要比使用索引快,则不会使用到索引
PHP面试题汇总
https://www.cnblogs.com/sweet-ice/articles/10507384.html
https://www.cnblogs.com/shoshana-kong/p/14109826.html
1.乐观锁:总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用以下两种方式实现:
①版本号机制
②CAS操作
2.悲观锁:总是假设最坏的情况,每次取数据时都认为其他线程会修改,所以都会加锁(读锁、写锁、行锁等),当其他线程想要访问数据时,都需要阻塞挂起。可以依靠数据库实现,如行锁、读锁和写锁等,都是在操作之前加锁(注:要使用数据库的悲观锁,我们必须关闭mysql数据库的自动提交属性,因为MySQL默认使用autocommit模式,也就是说,当你执行一个更新操作后,MySQL会立刻将结果进行提交),悲观锁分为两种:
①共享锁:共享锁是其它事务可以读但是不能写
SELECT * FROM table_name WHERE … LOCK IN SHARE MODE;
②排它锁:排他锁是只有自己得事务有权限对此数据进行读写
SELECT * FROM table_name WHERE … FOR UPDATE;
ps
加锁必须先开启事务:begin;(开启事务)->加锁、操作->commit;(提交事务,归还锁);锁不是针对事务的,排它锁只有一把,谁拿了谁就可以进行更新,但是没有拿到锁的事务只要在select不加上排它锁也可以查询到数据
PHP面试题汇总
PHP面试题汇总
PHP面试题汇总
https://www.cnblogs.com/huanongying/p/7021555.html
https://www.cnblogs.com/xichji/p/11286443.html
PHP面试题汇总
https://www.cnblogs.com/crazyWang/p/9125369.html
https://www.cnblogs.com/klb561/p/9221754.html
https://www.cnblogs.com/kindnull/p/10307333.html
https://www.jb51.net/article/165775.htm
https://www.cnblogs.com/gjw-hsf/p/8615217.html
注:网站后端响应返回的都是HTML
http://blog.chinaunix.net/uid-21181665-id-330885.html
https://www.cnblogs.com/xinhua219/articles/10250389.html
http://c.biancheng.net/view/800.html
https://www.cnblogs.com/bossma/p/practices-on-improving-the-speed-of-rabbitmq-consumption.html
常见问题链接
PHP面试题汇总
https://www.cnblogs.com/cjymuyang/p/9869581.html
未完待续~~~
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
下一篇
已是最新文章