1.Cookie 禁用了,Session 还能用吗?

对应的服务器 Session,Session ID 是通过 Cookie 来传递的,禁用 Cookie 相当于失去了 Session ID,就得不到 Session

php.ini 文件中的”session.use_trans_sid = 1“,或者编译时打开打开了”--enable-trans-sid 选项”

a.$sn=session_id();

session_id ($_GET-->url 传过来的参数)

b.fopen w+ 写入 session_id ()

fread 取出 sesson_id

2.GET、POST 传输最大容量是多少?

GET 发送 http 协议通过 url 方式传递,受浏览器或者服务器的设置限制

POST 实体数据,表单传送,通过 php.conf 的 post_max_size 可以设置传输大小

3. 抓取远程图片到本地,会用什么函数?

file_get_contents()

file_put_contents()

复制代码

4.CGI 是什么?什么是 FastCGI?php-fpm、FastCGI、Nginx 之间是什么关系?

server 收到一个 php 的请求时,会启动一个程序去处理当前的请求,而这个程序就是 CGI

通用网关接口 (返回标准 html 数据的服务)

FastCGI 是一个协议,是应用程序和 WEB 服务器连接的桥梁。Nginx 并不能直接与 PHP-FPM 通信,而是将请求通过 FastCGI 交给 PHP-FPM 处理。

php-fpm 是 fastcgi 进程的管理器,用来管理 fastcgi 进程的。

5. 函数内部 static 和 global 关键字的作用?

stattic (静态局部变量) 作用于函数内,不能用在函数外

global (静态全局变量) 可以作用任何地方

6.memcache 和 Redis 的区别及优缺点?

memcache 把数据存到内存中,读取速度快。

Redis 支持的数据类型更多,数据也可以存到硬盘,断电不会挂掉,数据持久化,memcache 一旦断电数据就没了。

都可以一主多从。

7.Include require include_once require_once 的区别?

处理失败方式不同:

require 失败时会产生一个致命级别错误,并停止程序运行。

include 失败时只产生一个警告级别错误,程序继续运行。

include_once/require_once 和 include/require 处理错误方式一样,

唯一区别在于当所包含的文件代码已经存在时候,不在包含。

8.php 魔幻(术)方法及预定义变量;

construct () 实例化类时自动调用。

destruct () 类对象使用结束时自动调用。

set () 在给未定义的属性赋值的时候调用。

get () 调用未定义的属性时候调用。

isset () 使用 isset () 或 empty () 函数时候会调用。

unset () 使用 unset () 时候会调用。

sleep () 使用 serialize 序列化时候调用。

wakeup () 使用 unserialize 反序列化的时候调用。

call () 调用一个不存在的方法的时候调用。

callStatic () 调用一个不存在的静态方法是调用。

toString () 把对象转换成字符串的时候会调用。比如 echo。

invoke () 当尝试把对象当方法调用时调用。

set_state () 当使用 var_export () 函数时候调用。接受一个数组参数。

clone () 当使用 clone 复制一个对象时候调用。

复制代码

预定义变量(超级全局变量)

$GLOBALS

$_SERVER

$_GET

$_POST

$_COOKIE

$_SESSION

$_REQUEST

$_ENV

复制代码

魔术变量

LINE

FILE

DIR

CLASS

FUNCTION

METHOD

NAMESPACE

复制代码

9. 一些编译 php 时的 configure 参数

–prefix=/usr/local/php php 安装目录

–with-config-file-path=/usr/local/php/etc 指定 php.ini 位置

–with-mysql=/usr/local/mysql mysql 安装目录,对 mysql 的支持

–with-mysqli=/usr/local/mysql/bin/mysql_config mysqli 文件目录,优化支持

–enable-safe-mode 打开安全模式

–enable-ftp 打开 ftp 的支持

–enable-zip 打开对 zip 的支持

–with-bz2 打开对 bz2 文件的支持

–with-jpeg-dir 打开对 jpeg 图片的支持

–with-png-dir 打开对 png 图片的支持

–with-freetype-dir 打开对 freetype 字体库的支持

–without-iconv 关闭 iconv 函数,种字符集间的转换

–with-libxml-dir 打开 libxml2 库的支持

–with-xmlrpc 打开 xml-rpc 的 c 语言

–with-zlib-dir 打开 zlib 库的支持

–with-gd 打开 gd 库的支持

复制代码

更多可以使用 ./configure help 查看

10. 写代码来解决多进程 / 线程同时读写一个文件的问题。

PHP 是不支持多线程的,可以使用 php 的 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);

复制代码

11.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 支持行锁。

复制代码

12.MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

a. 设计良好的数据库结构,允许部分数据冗余,尽量避免 join 查询,提高效率。

b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。

c. mysql 库主从读写分离。

d. 找规律分表,减少单表中的数据量提高查询速度。

e。添加缓存机制,比如 memcached,apc 等。

f. 不经常改动的页面,生成静态页面。

g. 书写高效率的 SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

13. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题

a. 确认服务器是否能支撑当前访问量。

b. 优化数据库访问。

c. 禁止外部访问链接(盗链), 比如图片盗链。

d. 控制文件下载。

e. 使用不同主机分流。

f. 使用浏览统计软件,了解访问量,有针对性的进行优化。

14. 是否用过模板引擎?如果有您用的模板引擎的名字是?

Smarty复制代码

15.PHP 中 this 和 self 的区别

this:对象

self:类

复制代码

16. 如何防止 SQL 注入,XSS 攻击和 CSRF 攻击

SQL 注入:mysqli_real_escape_string () 转义关键字符;

XSS 攻击:alert 把一些 cookie 信息打印出来;过滤掉 <> 等关键字符串

CSRF 攻击:跨站攻击。防止:token,验证码

PHP 设计模式

工厂模式:

建立一个工厂(一个函数或一个类方法)来制造新的对象。

工厂模式 是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。

单例模式:

某些应用程序资源是独占的,因为有且只有一个此类型的资源。例如,通过数据库句柄到数据库的连接是独占的。您希望在应用程序中共享数据库句柄,因为在保持连接打开或关闭时,它是一种开销,在获取单个页面的过程中更是如此。

单元素模式可以满足此要求。

PHP 中的单例模式(singleton pattern):指的是在 PHP 的应用程序的范围内只对指定的类创建一个实例。

在 PHP 中使用单例模式的类通常拥有一个私有构造函数和一个私有克隆函数,以防 止用户通过创建对象或者克隆对其进行实例化。还有一个静态私有成员变量 $instance 与静态方法 getInstance。getInstance 负责对其本身实例化,然后将这个对象存储在 $instance 静态成员变量中,以确保只有一个实例被创建。

观察者模式

命令链模式

策略模式

单例模式:

class SingleInstance

{

private function _construct(){

}

private static $instance;

private function _clone(){

}

public static function getInstance(){

self::$instance instanceof SingleInstance){

self::$instance=new SingleInstance();

}

return self ::$instance;

}

}

复制代码

短连接:例如普通的 web 请求,在三次握手之后建立连接,发送数据包并得到服务器返回的结果之后,通过客户端和服务端的四次握手进行关闭断开。

长连接:区别于短连接,由于三次握手链接及四次握手断开,在请求频繁的情况下,链接请求和断开请求的开销较大,影响效率。采用长连接方式,执行三次握手链接后,不断开链接,保持客户端和服务端通信,直到服务器超时自动断开链接,或者客户端主动断开链接。

适用场景:

短连接:适用于网页浏览等数据刷新频度较低的场景。

长连接:适用于客户端和服务端通信频繁的场景,例如聊天室,实时游戏等。

php常用设计模式和算法,常用算法、问答、设计模式相关推荐

  1. 计算机算法常用术语中英对照

    1 第一部分.计算机算法常用术语中英对照2 Data Structures 基本数据结构3 Dictionaries 字典4 Priority Queues 堆5 Graph Data Structu ...

  2. 算法总结---最常用的五大算法(算法题思路)

    算法总结---最常用的五大算法(算法题思路) 一.总结 一句话总结: [明确所求:dijkstra是求点到点的距离,辅助数组就是源点到目标点的数组] [最简实例分析:比如思考dijkstra:假设先只 ...

  3. 机器学习算法常用指标总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 机器学习性能评价标准是模型优化的前提,在设计机器学习算法过程中,不 ...

  4. 自动驾驶中常用的四类机器学习算法

    来源:智车科技 机器学习算法已经被广泛应用于自动驾驶各种解决方案,电控单元中的传感器数据处理大大提高了机器学习的利用率,也有一些潜在的应用,比如利用不同外部和内部的传感器的数据融合(如激光雷达.雷达. ...

  5. 经典常用算法/常用算法思维---附伪代码以及实现

    本篇文章旨在分享一些常用算法的伪代码以及部分算法的具体实现,后面也会更新我在刷算法题中学到的或者从别的地方看到的经典算法思维 本博客并不提供算法说明,算法证明,算法分析,算法测试等内容,只提供算法的伪 ...

  6. etc的常见算法_谈常用的几个机器学习算法,学懂算法也可以这么简单!

    本文的目的,是务实.简洁地盘点一番当前机器学习算法.文中内容结合了个人在查阅资料过程中收集到的前人总结,同时添加了部分自身总结,在这里,依据实际使用中的经验,将对此类模型优缺点及选择详加讨论 主要回顾 ...

  7. 超大数据量存储常用数据库分表分库算法总结

    这篇文章主要介绍了超大数据量存储常用数据库分表分库算法总结,本文讲解了按自然时间来分表/分库.按数字类型hash分表/分库.按md5值来分表/分库三种方法,以及分表所带来的问题探讨,需要的朋友可以参考 ...

  8. Set精讲(Java)·算法常用集合处理方法

    Set精讲(Java)·算法常用集合处理方法 Set概述 Set集合类似于一个罐子,程序可以依次把多个对象"丢进"Set集合,而Set集合通常不能记住元素的添加顺序.实际上Set就 ...

  9. List精讲(Java版)·算法常用集合处理方法

    List精讲(Java版)·算法常用集合处理方法 请仔细查阅每一个注释: import java.util.ArrayList; import java.util.Collections; impor ...

  10. java中常用的几种排序算法--常见笔试面试

    转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...

最新文章

  1. oneinstack
  2. 《用户体验设计 本质、策略与经验》一导读
  3. 网吧母盘制作(精华)
  4. python装饰器简单理解
  5. VMware vSphere 5.1 群集深入解析(二十一)- 存储I/O控制(SIOC)
  6. (转)国外软件外包项目网站(适用软件兼职)
  7. 持续集成之应用k8s自动部署
  8. java判断字符串中是否含有某个字符串
  9. 三年后见!雷军透露年轻人的第一台汽车售价......
  10. python 操作excel神器_【转】多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!...
  11. 读书笔记 - 《皇上走了》
  12. 两种方式实现java生成Excel
  13. 解决 “数据库 'tempdb' 的日志已满。请备份该数据库的事务日志以释放一些日志空间” 的问题...
  14. 小学生C++趣味编程教材
  15. Docker制作深度学习镜像常用操作
  16. linux mint字体缺失,WPS for Linux【Debian、Ubuntu、Deepin、Linux Mint】字体缺失解决【批量字体安装】...
  17. [经]信用体系,金融改革
  18. 控制台报错: Another version of Vue Devtools seems to be installed. Please enable only one version at a ti
  19. hive percentile_approx原理
  20. c语言 ascii码转成字符串,ASCII码与字符串的相互转换

热门文章

  1. PyCharm安装步骤
  2. windows搭建yolo环境
  3. Ubuntu18.04 安装wine
  4. Mac解决安装pip(python2.7)失败
  5. Input调用流程(好文)
  6. c++最小的引用()demo
  7. linux标准输入/输出/错误
  8. springboot之websocket集成
  9. 人脸方向学习(十):Face Detection-MobileNet_SSD解读
  10. IP地址、IP段通俗化介绍