1,Http 和 Https 的区别

第一:http 是超文本传输协议,信息是明文传输,https 是具有安全性的 ssl 加密传输协议

第二:http 和 https 使用的是完全不同的连接方式,端口也不一样,前者 80 或者 443 第三:http 连接很简单,是无状态的。https 协议是由 ssl+http 协议构建的可进行加

密传输,身份认证的网络协议。

2.什么方法来加快页面的加载速度

1,用到服务器资源时在打开,不用时,立即关闭服务器资源。

2,数据库添加索引

3,页面可生成静态

4,图片等大文件单独放在一个服务器

5,能不查询数据库的尽量不去数据取数据,可以放在缓存中。

3.表单中 get 与 post 提交方法的区别?

答:get 是发送请求 HTTP 协议通过 url 参数传递进行接收,而 post 是实体数据,可以通过表单提交大量信息.

4.echo ,print,print_r 的区别:

echo 是 php 语句,无返回值。

print,print_r 是函数,有返回值。

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

5.session 与 cookie 区别

session 与 cookie 相同:跨页面、不跨用户

session 与 cookie 不相同:

1、session 可以存储任意类型的数据,但 cookie 只能存储字符串

2、cookie 产生在服务器端、存储在客户端

session 产生在服务器端、存储在服务器端

6.魔术常量

答案:

LINE文件中的当前行号。

FILE文件的完整路径和文件名。

FUNCTION函数名称

CLASS类的名称

METHOD类的方法名

7.数据库中的事务是什么?

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

8.1 优化 MYSQL 数据库的方法。

1、选择合适的字段的数据类型

1)能用数字不用字符串

2)char、varchar、text能用 varchar 不用 char

3)给字段加 not null 避免在表中出现 NULL 关键字(default 值)

2、选择合适的字段充当主键

1)建议每张表必须有主键

2)用数字类型的字段充当主键

3、拆分表

1)拆分字段,将文章的标题与内容分开

2)拆分记录,将今年的记录与往年的记录分开

4、给字段合理添加索引

a.格式:

(普通索引)->
创建:CREATE INDEX <索引名> ON tablename (索引字段) 修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段) 创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段)) (唯一索引)-> 创建:CREATE UNIQUE <索引名> ON tablename (索引字段) 修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段) 创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段)) (主键)-> 它是唯一索引,一般在创建表是建立,格式为: CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

5、事务处理:

a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败

mysql_query("BEGIN");
mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";
mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
mysql_query("COMMIT");

6、锁定表,优化事务处理:

a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。

包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,不会有其它的访问来对 inventory 进行插入、更新或者删除的操作

mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE"); 
mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id);
mysql_query("UNLOCK TABLES");

7、使用外键,优化锁定表

a.把 customerinfo 里的 customerid 映射到 orderinfo 里的 customerid,

任何一条没有合法的 customerid 的记录不会写到 orderinfo 里

CREATE TABLE customerinfo(

customerid INT NOT NULL,

PRIMARY KEY(customerid)

)TYPE = INNODB;

CREATE TABLE orderinfo(

orderid INT NOT NULL,

customerid INT NOT NULL,

PRIMARY KEY(customerid,orderid),

FOREIGN KEY (customerid) REFERENCES customerinfo (customerid) ON DELETE CASCADE

)TYPE = INNODB;

注意:'ON DELETE CASCADE',该参数保证当 customerinfo 表中的一条记录删除的话同时也会删除 order

表中的该用户的所有记录,注意使用外键要定义事务安全类型为 INNODB; 
8、优化查询语句

a 用内连接代替子查询代替子查询,用 sphinx 代替 like 模糊查询

b最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作例子

例子1:
SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)
SELECT * FROM order WHERE orderDate<"2008-01-01";(快)
例子 2:
SELECT * FROM order WHERE addtime/7<24;(慢)
SELECT * FROM order WHERE addtime<24*7;(快)
例子 3:
SELECT * FROM order WHERE title like "%good%";
SELECT * FROM order WHERE title>="good" and name<"good";

9、缓存,静态化

10、选择合适存储引擎用 Innodb 增删改,用 myisam 查询

11、主从数据库

12、负载均衡

13、最好拿数字类型的字段充当 where 条件

14、最好拿相同类型的字段进行比对(避免发生数据类型的转换)

15、不要在具有索引的字段上添加数据库函数(索引失效)

PHP核心技术与最佳实践

作者:列旭松,陈文 著

当当广告

购买

8.2 请简述项目中优化 sql 语句执行效率的方法,从哪些方面,sql 语句性能如何分析?

答:(1)选择最有效率的表名顺序

(2)WHERE 子句中的连接顺序

(3)SELECT 子句中避免使用‘*’

(4)用 Where 子句替换 HAVING 子句

(5)通过内部函数提高 SQL 效率

(6)避免在索引列上使用计算。

(7)提高 GROUP BY 语句的效率, 可以通过将不需要的记录在 GROUP BY 之前过滤

掉。

9.对于大流量网站,采用什么方法解决访问量问题?

1,确认服务器的硬件是否足够支持当前的流量

2,优化数据库的访问

3,禁止外部的盗链

4,控制大文件的下载

5,使用不同主机分流主要流量

6,使用流量分析统计软件

10.一个函数,能够遍历一个文件夹下的所有文件和子文件夹(20 分)
function dir_recurse($dir) {

  $i = 1;

  if($handle = opendir($dir)) {

    while(false !== ($file = readdir($handle))) {

      if($file != "."&& $file != ".." ) {

        if(is_dir($dir."/".$file) == true) {

          $fullpath = $dir."/".$file;

        dir_recurse($fullpath);

        echo "$fullpath\n";

        $i++;

}else {

      $fullpath = $dir."/".$file;

      echo "$fullpath\n";
     $i++;    }  } } closedir($handle); }
}
10.2 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
function my_scandir($dir){

    $files = array();

      if ( $handle = opendir($dir) ) {

        while ( ($file = readdir($handle)) !== false ) {

          if ( $file != ".."&& $file != "." ) {

          if ( is_dir($dir . "/" . $file) ) {

            $files[$file] = scandir($dir . "/" . $file);

          }else {

            $files[] = $file;

          }

        }

    }

    closedir($handle);

    return $files;

  }

}

参考:微信公众号:PHP在线

PHP 常见问题3的更多相关文章

  1. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  2. SQL Server常见问题介绍及快速解决建议

    前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题.这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架. 下面一些问题是 ...

  3. 【腾讯优测干货分享】如何降低App的待机内存(二)——规范测试流程及常见问题

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/806TiugiSJvFI7fH6eVA5w 作者:腾讯TMQ专项测 ...

  4. mysql数据库开发常见问题及优化

    mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...

  5. 《PDF.NE数据框架常见问题及解决方案-初》

    <PDF.NE数据框架常见问题及解决方案-初> 1.新增数据库后,获取标识列的值: 解决方案:    PDF.NET数据框架,已经为我们考略了很多,因为用PDF.NET进行数据的添加操作时 ...

  6. MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)

    最近帮忙公司的几个项目组进行了不同方面的性能优化,发现几个项目都出现了一些共性的问题.这里写一篇文章,总结一下这几类问题,以及其对应的解决方案.方便其它项目组参考.   常见问题一:打开页面非常慢,有 ...

  7. JMeter常见问题集合

    前言 本文内容仅仅是针对Jmeter的部分功能名词的介绍和解释,以及初学者不易理解的问题的整理.部分内容来自别人做的整理,为了更好地整理自己的思路,所以可耻的整理一下发到博客上. 标题[1-6]和[参 ...

  8. NHibernate常见问题及解决方法

    NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...

  9. .NET Core中ADO.NET SqlClient的使用与常见问题

    一.简介 在很多要求性能的项目中,我们都要使用传统的ADO.NET的方式来完成我们日常的工作:目前有一些网友问有关于.NET Core操作SQL Server的问题在本文中解答一下. 本文旨在指出,在 ...

  10. 企业IT管理员IE11升级指南【6】—— Internet Explorer 11面向IT专业人员的常见问题

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

随机推荐

  1. 边框圆角值的问题、white-space、word-wrap、margin对布局的影响

    1.边框圆角(border-radius)值的问题 border-radius : 7px 7px 7px 0; 四个值的顺序是左上.右上.右下.左下 2.white-space 规定段落中的文本不换 ...

  2. #pragma使用分析

    #pragma简介 #pragma用于指示编译器完成一些特定的动作 #pragma所定义的很多指示字是编译器特有的 #pragma在不同的编译器间是不可移植的 预处理器将忽略它不认识的#pragma指 ...

  3. 成为Android高手必须掌握的8项基本要求

    [1] Android操作系统概述 1. Android系统架构. 2. Android利用设计理念. 3. Android 开源知识. 4. Android 参考网站与权威信息.[2] Androi ...

  4. Android Learning Note -- AsyncTask浅尝

    AsyncTask 实现原理 AsyncTask是Android提供的轻量级异步类,可以直接继承AsyncTask在类中实现异步操作,并提供接口反馈当前的异步执行程度(通过接口实现UI进度更新),最后 ...

  5. 一行命令杀掉defunct进程

    一行命令杀掉defunct进程 今天在杀掉defunc过程中一直搞不完,索性写一行命令,注意先看懂谨慎使用 ps -ef|grep defunct|awk '{print " ps -ef| ...

  6. docker 新手入门(docker的安装)

    docker的安装(在centos7下面) 1. 卸载在liunx下,先看有没有安装docker,docker version,如果有的话,可以先移除 yum remove ........ 可以使用 ...

  7. Web Server Notifier 是chrome网上商店的一个插件

    Web Server Notifier 是chrome网上商店的一个插件

  8. QT_7_资源文件_对话框_QMessageBox_界面布局_常用控件

    资源文件 1.1. 将资源导入到项目下 1.2. 添加文件—>Qt -->Qt Resource File 1.3. 起名称 res ,生成res.qrc文件 1.4. 右键 open i ...

  9. 【软件构造】第八章第三节 代码调优的设计模式和I/O

    第八章第三节 代码调优的设计模式和I/O 本节学习如何通过对代码的修改,消除性能瓶颈,提高系统性能?——代码调优.面向性 能的设计模式 Outline Java调优 代码调优的概念 单例模式(Sing ...

  10. ssh服务使用介绍二

    老司机开车了 快上车 上文提到当我们使用ssh远程链接主机的时候,会出现询问的提示,如果我们链接的机器多了,一遍一遍的输入是不是很麻烦?怎么解决如下 vim /etc/ssh/ssh_config 如 ...