RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
PHP技术知识点整理
  • 作者:小万
  • 发表时间:2020-07-02 15:17
  • 来源:未知

  (1)mvc即 模型model,视图view,控制器controller;是一种模型,是一种编程思想,就是把一个应用的输入、输出、数据处理分开,分解耦合(2)A..视图,数据采集和处理,和用户请求,不包括业务流程,smarty实现B.模型,接收数据和请求,完成相关数据处理,返回数据,黑箱操作,核心,php类库实现C.控制器,任务的实现,根据传入数据调用各种组件完成任务,将结果传给视图显示,业务流程的实现。(3)mvc的优点:使开发人员只关注某一层,很容易用新代替旧层次的实现,低依赖性,重用性,标准化,扩展性.维护性

  A.三种:(1)递归方式:查询次数非常多,不推荐使用。(2)ajax:点谁,查子栏目,再点子栏再查子栏目。点了几次查了几次(3)血缘关系:一次性把亲戚全找到。新增加栏目的path=父ID的path-父栏目的ID

  (1)确认服务器硬件是否支持当前流量。(2)memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,不访问数据库。(3)禁外部盗链。外部网站的图片或文件盗链会带来大量负载压力,应该严格限制外部对自身盗链,目前可以简单通过refer控制盗链,apache可以通过配置来禁止盗链。(4)控制大文件下载。大文件的下载会占用很大的流量,对于非SCSI硬盘来说会消耗,使得网站响应能力下降。(5)不同主机分流(6)流量统计软件。可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化。如phpstat,pcs(7)分库分表。(8)Sphinx全文索引引擎。(9)cdn技术让不同地方的ip访问不同地方的服务器。(10)高并发,f5、lvs。(11)如果是代码服务器与数据库服务器负载不上,加一队列让其给代码服务器平均分配链接。

  (1)数据库设计,结构良好,允许部分冗余。(2)最适用字段属性,尽可能字段NOTNULL,这样在查询时,不用去比较NULL值。(3)系统架构设计,表散列,海量数据散列到几个表里,集群,查写分开。(4)高效sql,提高效率。(5)使用连接(join)来代替子查询。(6)使用联合(union)来代替手动创建的临时表。(7)所得皆必须,只从数据库取必须的数据。(8)必要时用不同存储引擎,如Innodb可少死锁,HEAP提查询速度。(9)使用事务、外键、索引(10)缓存技术

  (1)MD5(密码+字符串)加密。(2)登录表单名不跟字段一样,免暴漏表字段。(3)表名、字段名、密码用不易被猜到的。(4)用验证码验证登陆,以防止暴力破解。(5)验证提交的数据是不是来自本网站。(6)登录后处理代码数据库部分使用预处理,做好过滤,防sql注入。

  (1)BroPHP:优点:轻量级学习型框架,配置简,操作简,易上手,全面文档。(2)ThinkPHP框架:优点:功能全,配置较简,操作较简,多示例程序。缺点:操作方法太多,新手不知如何选,文档不全面。

  (1)GET明文传输显示的地址栏上各值之间以&连接。POST传输是不可见的。(2)GET数据长度有限,不适合大数据传输。post理论上是没有限制,具体根据浏览器而定。(3)GET限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

  (1)Session服务器端,给每个客户分配一个唯一的数字,作为每个客户的标识,Cookies是一种由服务器发送给客户端的片段信息,存储在客户端浏览器的内存或是硬盘上,每次发出页面请求时,都会把里面的数据发送给服务器端.可以利用它在远程浏览器端存储数据并以此来跟踪和识别用户的机制。(2)Cookies适合做保存用户个人设置,爱好等,Session适合做客户的身份验证.(3)http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。

  (1)MyISAM优:成熟、稳定、易于管理;表格锁定机制;比innoDB快;缺:optimize清理空间;适合:读取需求、节约空间时间、响应速度快;(2)InnoDB优:数据库支持外键和事务处理,缺:速度比MyISAM稍慢;占用空间大;适合:用到事务、外键和更高安全性的需求;多用户同时修改表;

  (1)索引:通过在表字段中建立索引可提高查询优化,确保数据的唯一性,以及可以对全文索引字段中的大量文本的搜索进行优化。(2)主键索引(primary key):主要作用是确定数据表里一条特定的数据记录的位置。数据表会根据主键的唯一索引性来唯一标示每条记录。(3)唯一索引(unique)主要是为了避免数据出现重复(4)区别:每个表中只能有一个主键索引,但可以有多个唯一索引。

  (1)保证数据库表中每一行唯一性.(2)加快数据检索速度,最主要的原因。(3)加速表和表之间连接(4)在使用分组和排序 子句进行数据检索时,显著减少查询中分组和排序时间。(5)查询使用优化隐藏器,提高系统性能。

  (1)创建和维护索引要耗费时间,随着数据量的增加而增加。(2)占物理空间,除了数据表占数据空间之外,索引还要占一定的物理空间,如果要建立聚簇索引,空间就会更大。(3)当对表数据进行增删改时,索引也要动态维护,降低数据维护速度。

  在哪建索引?(1)经常需要搜索的列,加快搜索的速度;(2)主键列,强制该列唯一性和组织表中数据排列结构(3)经常连接列(外键)加快连接速度(4)范围搜索列,因索引已排序,范围是连续(5)排序列,因索引已排序,可利用索引排序加快时间;(6)WHERE子句列,加快条件判断。

  15.varchar和char区别?(1)char是固定长度,分配多少,就占多长。(2)Varchar是可变长度,内容有多大就占多大,节省空间。(3)因varchar是可变的,所以在数据长度改变时,服务器要进行额外操作,所以效率比char类型低。

  (1)ie浏览器使用范围广,很多不规范网页都是只支持ie内核浏览器的,但因使用范围广,成为黑客攻击目标。(2)非ie内核浏览器为抢占市场,研究新技术新功能,所以比ie内核浏览器速度功能出色,但因不具ie经常被攻击锻炼出来免疫力,一旦被攻击完全不具备承受能力。

  事务(transaction)是作为一个单元一组有序的数据库操作。若组中所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。若一个操作失败,则事务回滚,该事务所有操作影响都将取消。

  session_start()开启时,生成一个常量SID,当COOKIE开启时,这个常量为空,当COOKIE关闭时,这个常量中存储了PHPSESSID的值。通过在URL后加一个SID参数来传递SESSIONID的值,从而使客户端页面可以使用SESSION里面的值。当客户端开启COOKIE和服务器端开启SESSION时。浏览器第一次请求,服务器会向浏览器端发送一个COOKIE里面存储SESSIONID.当浏览器第二次请求时,会把已存在的COOKIE一起提交到服务器端。

  Isset是否存在,存在(真),empty是否(空假),(空假)返回线.

  SVN的了解?优缺点?定义:SVN是一种版本控制器,程序员开发代码递交到版本服务器进行集中管理。优点:代码进行集中管理,版本控制容易,操作比较简单,权限控制方便。缺点:不能随意修改服务器项目文件夹。

  (1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略(2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改(3)优缺点:A:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。B.按引用传递则不需要复制值,对于性能提高很有好处。

  (1)cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它支持多种协议。(2)使用cURL完成请求:a.初始化,创建一个新cURL资源b.设置URL和相应的选项c.抓取URL并把它传递给浏览器d.关闭cURL资源,并且释放系统资源.

  常使用那些代码版本控制软件?通常一个项目是由一个团队去开发,每个人将自己写好的代码提交到版本服务器,由项目负责人按照版本进行管理,方便版本的控制,提高开发效率,保证需要时可以回到旧版本。常用的版本控制器:SVN

  SVN的了解?优缺点?SVN是一种版本控制器,程序员开发的代码递交到版本服务器进行集中管理。优点

  1、有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用abstract关键字定义。

  2、接口中全部是抽象方法,方法不用使用abstract定义。3、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口。45.如下user表结构

  使用memcache缓存技术,在一定时间内将动态内容缓存到文件中,访问动态页面时,直接调用缓存文件而不必重新查询数据库。

  echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)

  print_r()可以打印出复杂类型变量的值(如数组,对象)echo输出一个或者多个字符串

  __autoload()在实例化一个尚未被定义的类是会自动调用次方法来加载类文件

  __set()当给未定义的变量赋值时会自动调用的方法__get()当获取未定义变量的值时会自动调用的方法__construct()构造方法,实例化类时自动调用的方法

  __isset()当对一个未定义变量调用isset()方法时自动调用的方法

  2、单一入口更容易控制权限,方便对http请求可以进行安全性检查。缺点:URL看起来不那么美观,特别是对搜索引擎来说不友好。

  Memcache是一种缓存技术,在一定的时间内将动态网页经过解析之后保存到文件,下次访问时动态网页就直接调用这个文件,而不必在重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,减轻高并发时服务器的压力。Memcache的优点:稳定、配置简单、多机分布式存储、速度快。55.

  2、创建唯一性索引,保证数据库表中每一行数据的唯一性3、加速表和表之间的连接4、使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

  负面影响:创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改的时候索引也要动态维护,这样就降低了数据的维护速度。

  2、对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等。56.web

  如何优化MySQL而应对此种情景?使用memcache缓存技术,将动态数据缓存到文件,访问动态页面时直接调用缓存文件,而不必重新访问数据库,这样就减少了查询数据库的次数。如果网站的访问量很大,可以把数据库读写服务器分开,使用多台服务器去处理数据库查询,使用较少的服务器去处理数据库的写入和修改。57.

  (1)include()在执行文件时每次都要进行读取和评估;require()文件只处理一次(实际上文件内容替换了require()语句)(2)require()通常放在PHP脚本程序的最前面include()的使用和require()一样,一般放在流程控制的处理区段中,PHP脚本文件读到include()语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化(3)require()和include()语句是语言结构,不是真正的函数,可以像PHP的其他语言结构一样(4)include_once()和require_once()语句也是在脚本执行期间包括并运行指定文件,与include()require()唯一的区别是如果文件中的代码已经被包括了,则不会再次包括.

  require()包含文件失败,停止执行,给出错误(致命的);(6)include()常用于动态包含.通常是自动加载的文件,即使加载出错,整个程序还是继续执行一个页面声明,另一个页面调用包函文件失败,继续向下执行,返回一条警告59.什么是时间戳?

  时间戳是从1970年1月1日00:00:00到指定日期的秒数。获取当前时间戳:time()60.

  如何防止?XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的Activex控件执行恶意的行为。使用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化。61.

  地址占几个字节?一个IPv6地址呢?一个字节占8bit,一个IPV4占用4字节,一个IPV6占用16字节。62..M ADSL宽带连接

  GET、POST和HEAD的区别?HEAD:只请求页面的首部。GET:请求指定的页面信息,并返回实体主体。POST:请求服务器接受所指定的文档作为对所标识URI新从属实体。(1)HTTP定义了与服务器交互的不同方法,最基本方法是GET和POST。GET适用于多数请求,而保留POST仅用于更新站点。(2)在FORM提交时,如不指定Method,则

  ,Form中提交数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;

  字节,而POST则没有此限制。(3)GET这个是浏览器用来向服务器请求最常用的方法。POST这个方法也是用来传送数据的,但是与GET不同的是,使用POST的时候,数据不是附在URI后面传递的,而是要做为独立的行来传递,此时还必须要发送一个Content_length标题,以标明数据长度,随后一个空白行,然后就是实际传送的数据。网页的表单通常是用POST来传送的。

  安全模式,PHP用来限制文档的存取、限制环境变量的存取,控制外部程序的执行。启用安全模式必须设置php.ini中的safe_mode = On

  用来让php程序的输入信息自动转义,所有的单引号(“”),双引号(“””),反斜杠(“\”)和空字符(NULL),都自动被加上反斜杠进行转义

  程序员也可以使用addslashes来转义提交的HTTP请求数据,或者用stripslashes来删除转义