深入解析一二三四五原则:消息、成功、重定向、请求错误与服务器端错误系列

[id_[id_2051973975]41733020]
4.Linux 下建立压缩包,解压缩包的命令
Tar.gz:打包: tar czf file.tar.gz file.txt解压: tar xzf file.tar.gzBz2:打包: bzip2 [-k] 文件解压: bunzip2 [-k] 文件Gzip(只对文件,不保留原文件)打包: gzip file1.txt解压: gunzip file1.txt.gzZip: -r 对目录打包: zip file1.zip file1.txt解压: unzip file1.zip
请写出数据类型 int 的意思;请写出数据类型 char 的意思;请写出数据类型 varchar 的意思;请写出数据类型 datetime 的意思;请写出数据类型 text 的意思。请问 varchar 这种数据类型与 char 这种数据类型有什么区别?
Char 是固定长度的字符类型,它所分配的空间大小就是其占用的空间大小。Varchar 是可变长度的字符类型,其占用的空间大小取决于内容的大小,这样能有效节省空间。Varchar 类型是可变的。在数据长度改变的时候,服务器需要进行额外的操作。因此,varchar 类型的效率比 char 类型低。
MyISAM 和 InnoDB 的基本区别是什么?索引结构是怎样实现的?
MyISAM 类型不具备事务支持功能,采用表锁方式,容易产生碎片,需要经常进行优化,但其读写速度相对较快。而 InnoDB 类型支持事务,使用行锁,具备崩溃恢复能力,不过其读写速度比 MyISAM 类型要慢。
创建索引:向表 tablename 添加索引,该索引名为`字段名`。
7.不使用cookie向客户端发送一个cookie.
当 session_start()开启时,会生成一个常量 SID。若 COOKIE 开启,此常量为空;若 COOKIE 关闭,此常量中会存储 PHPSESSID 的值。通过在 URL 后添加一个 SID 参数,就能传递 SESSIONID 的值,这样客户端页面就可以使用 SESSION 里面的值了。当客户端开启了 COOKIE 并且服务器端开启了 SESSION 时,在浏览器第一次发出请求的时候,服务器会向浏览器端发送一个 COOKIE,这个 COOKIE 里面存储着 SESSIONID。而当浏览器进行第二次请求时,就会把已经存在的相关内容携带过来。
8.isset() 和 empty() 区别
Isset 可用于判断变量是否存在,它能传入多个变量。若传入的多个变量中存在一个变量不存在,Isset 就会返回假。empty 用于判断变量是否为空为假,它只能传一个变量。如果这个变量为空为假,empty 就会返回真。
如何在页面之间传递变量呢?至少有两种方式,分别是 GET、POST、COOKIE 和 SESSION,还有隐藏表单。
1. 写出匹配URL的正则表达式.
这个正则表达式用于匹配各种协议开头的网址,包括 http 和 https 以及 ftp 和 ftps 等。它可以匹配以 www 开头的网址,也可以匹配不以 www 开头的网址。它可以匹配不同的顶级域名,如 com、cn 和 org 等。并且它还可以匹配网址中的路径部分,包括各种字符和参数等。
请写出一些常见的排序算法。接着用 PHP 实现冒泡排序,把数组$a = array()以从小到大的顺序进行排序。
常见的排序算法有冒泡排序法,还有快速排序法,以及简单选择排序法,还有堆排序法,还有直接插入排序法,还有希尔排序法,还有合并排序法。
冒泡排序法的基本思想为:对待排序记录的关键字进行多遍扫描,扫描的方向是从后往前(逆序)。在扫描过程中,若发现相邻两个关键字的次序不符合排序要求的规则,就将这两个记录进行交换。通过这样的方式,关键字较小的记录会逐渐从后面向前面移动,就如同气泡在水中向上浮一样。因此,该算法也被称为气泡排序法。
// 冒泡排序法Function mysort($arr){For($i=0; $iFor($j=0; $j-1 -$i; $j++){If($arr[$j] > $arr[$j+1]){$tmp=$arr[$j];$arr[$j]=$arr[$j+1];$arr[$j+1]=$tmp;}}}Return $arr;}$arr=array(3,2,1);print_r(mysort($arr));
请说明在 PHP 中传值与传引用的差异。在何种情况下应该使用传值,又在何种情况下应该使用传引用?
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
在函数范围内,如果是按引用传递,那么对值的任何改变,在函数外部都能反映出这些修改。
缺点:按值传递时,php 必须复制值,尤其对于大型的字符串和对象,这会是一个代价很大的操作。
PHP 中 error_reporting 这个函数的作用是什么?
设置 PHP 的报错级别并返回当前级别。
写一个函数来用正则表达式验证电子邮件格式是否正确。if(isset($_POST['action']) && $_POST['action']==’submitted’){$email=$_POST['email'];if(!preg_match(“/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+){1,3}$/”,$email)){echo “电子邮件检测失败”;}else{echo “电子邮件检测成功”;}}
使用PHP描述快速排序算法,对象可以是一个数组?
原理:快速排序通过分治策略,将待排序的数据序列划分成两个子序列。具体的步骤包含:
(1)从数列中挑出一个元素,称该元素为“基准”。
扫描数列一遍,把所有比“基准”小的元素放置在基准之前,把所有比“基准”大的元素放置在基准之后。
通过递归的方式,把各子序列划分成更小的序列。一直进行划分,直到能够把小于基准值元素的子数列以及大于基准值元素的子数列都完成排序。
//快速排序(数组排序)function QuickSort($arr){$num = count($arr);$l=$r=0;for($i=1;$i<$num;$i++){if($arr[$i] < $arr[0]){$left[] = $arr[$i];$l++;}else{$right[] = $arr[$i];$r++;}}if[id_212661115]1){$left = QuickSort($left);}$new_arr = $left;$new_arr[] = $arr[0];if($r > 1){$right = QuickSort($right);}for($i=0;$i<$r;$i++){$new_arr[] = $right[$i];}return $new_arr;}
使用 PHP 来描述顺序查找和二分查找(即折半查找)算法。顺序查找需要考虑效率,其对象可以是一个有序数组。
//二分查找(数组里查找某个元素)function bin_sch($array, $low, $high, $k){if ($low <= $high){$mid = intval(($low+$high)/2);if ($array[$mid] == $k){return $mid;}elseif ($k < $array[$mid]){return bin_sch($array, $low, $mid-1, $k);}else{return bin_sch($array, $mid+1, $high, $k);}}return -1;}//顺序查找(数组里查找某个元素)function seq_sch($array, $n, $k){$array[$n] = $k;for($i=0; $i<$n; $i++){if($array[$i]==$k){break;}}if ($i<$n){return $i;}else{return -1;}}
写一个可以对二维数组进行排序的算法函数,此函数要具备通用性,并且能够调用 php 的内置函数 array_multisort()。
二维数组进行排序,其中$arr 为数据,$keys 是用于排序的键值,$order 是排序规则,当$order 为 1 时是升序,当$order 为 0 时是降序。function array_sort($arr, $keys, $order=0) {if (!is_array($arr)) {return false;}$keysvalue = array();foreach($arr as $key => $val) {$keysvalue 中 $key 所对应的位置被赋值为 $val 中 $keys 所对应的元素。}if($order == 0){asort($keysvalue);}else {arsort($keysvalue);}reset($keysvalue);foreach($keysvalue as $key => $vals) {$keysort[$key] = $key;}$new_array = array();foreach($keysort as $key => $val) {$new_array 的 $key 位置被赋予了 $arr 的 $val 位置的值。}return $new_array;}
将字符串'Apple Orange Banana Strawberry'以空格作为间隔进行拆分,组成数组$fruit ,即$fruit 为["Apple","Orange","Banana","Strawberry"]
* 数组中所有元素都用小写字母,并按照字母先后次序排序
class sort {private $str;public function __construct($str) {$this->str=strtolower($str);}private function explodes() {if(empty($this->str)) return array();$arr=explode(" ",$this->str);return is_array($arr)?$arr:array($arr);}public function sort() {$explode=$this->explodes();sort($explode);return $explode;}}$str=;$sortob=new sort($str);var_dump($sortob->sort());
用户输入一串字符串$string,需验证这串字符串中只能包含大于 0 的数字和英文逗号。若不符合要求,就返回出错信息。用正则表达式来进行此验证操作。
class regx {public static function check($str) {if(preg_match("/^([1-9,])+$/",$str)) {return true;}return false;}}$str="12345,6";if(regx::check($str)) {echo "suc";} else {echo "fail";}
将读取到的内容还原为数组。
class sort {private $str;public function __construct($str) {$this->str=strtolower($str);}private function explodes(){if(empty($this->str)) return array();$arr=explode(" ",$this->str);return is_array($arr)?$arr:array($arr);}public function sort() {$explode=$this->explodes();sort($explode);return $explode;}}class file {private $sort=null;private $filepath;public function __construct($arrobj,$path) {$this->sort=$arrobj;$this->filepath=$path;}private function getresource($filename,$mode) {return fopen($this->filepath.$filename,$mode);}private function closeresource($resource) {fclose($resource);}public function savefile($filename) {$arr=$this->sort->sort();$fopen=$this->getresource($filename,"a+");if(!$fopen){echo "文件打开失败!";exit;}var_dump($arr);foreach($arr as $key=>$value) {fwrite($fopen,$value."\n");}$this->closeresource($fopen);}public function readfile($filename) {$this->savefile($filename);$fopen=$this->getresource($filename,"r");if(!$fopen){echo "文件打开失败!";exit;}$arr=array();while(!feof($fopen)) {$get=fgets($fopen);if(!empty($get))$arr[]=str_replace("\n","",$get);}$this->closeresource($fopen);return $arr;}}$file=new file(new sort('Apple Orange Banana Strawberry'),"E:\\");$arr=$file->readfile("fruit.dat");var_dump($arr);
单例模式,创建mysqli数据库链接的单例对象
class Db {private static $instance;public $handle;Private function __construct这包含了主机 $host、用户名 $username、密码 $password 和数据库名 $dbname 。 {$this->handle=NULL;$this调用 getcon 函数,并传入主机名 $host、用户名 $username、密码 $password 和数据库名 $dbname 作为参数。}public static function getBb() {self::$instance=new Db();return self::$instance;}private function getcon($host,$username,$password,$dbname) {if($this->handle!=NULL){return true;}$thismysqli_connect 函数被调用,传入参数 $host、$username、$password 和 $dbname,其返回值被赋值给变量 handle 。}}
在 windows 平台上,Apache Http Server 启动出现了失败的情况,那么其排错的思路具体是什么呢?
检查 apache 使用的 80 端口是否处于被占用状态。若被占用,需先停止占用 80 端口的服务。之后再启动 apache 服务器。
PHP session 扩展通常会把 session 数据储存在哪里呢?D 部分会提及相关内容。
A) SQLite DatabaseB) MySQL DatabaseC) Shared MemoryD) File SystemE) Session Server
如果你想要自动加载类,下面哪种函数声明是正确的 C
A) function autoload($class_name)B) function __autoload($class_name, $file)C) function __autoload($class_name)D) function _autoload($class_name)E) function autoload($class_name, $file)
PHP 程序是以 utf-8 编码的,那么下面这个程序的输出结果会是什么呢?B
$str = ’hello你好世界’;echo strlen($str);A 是 9;B 是 13(gbk);C 是 18;D 是 17(utf8)
你所知道的php数组相关的函数?
array()----创建数组
array_combine()会通过将两个数组进行合并的方式来创建一个新的数组。
range()函数可以创建并返回一个包含特定范围的元素的数组。 它能够生成一系列连续的数值。 这些数值按照指定的起始值、结束值和步长来确定。 最终形成一个包含指定范围内元素的数组。
compact()----建立一个数组
array_chunk()----将一个数组分割成多个
array_merge() 能够将两个或者多个数组合并成为一个数组。
array_slice 函数能在数组里依据条件取出一段值。
array_diff()----返回两个数组的差集数组
array_intersect()----计算数组的交集
array_search()----在数组中搜索给定的值
array_splice 函数可以移除数组的一部分,并且能够用其他元素来替代被移除的部分。
判断某个数组中是否存在指定的 key 可以使用 array_key_exists()函数
shuffle()----把数组中的元素按随机顺序重新排列
array_flip()----交换数组中的键和值
array_reverse() 会将原数组里的元素顺序进行翻转,接着创建一个新的数组,最后将这个新数组返回。
array_unique()----移除数组中重复的值
php读取文件内容的几种方法和函数?
打开文件,然后读取。Fopen() fread()
打开读取一次完成 file_get_contents()
以下程序,变量str什么值的情况下输入111?
if( ! $str ) { echo 111; }在$str值为:0,’0′,false,null,”"
你所知道的PHP的一些技术(smarty等)?
Smarty ;jquery ;ajax ;memcache ;div 与 css ;js ;mysqli ;pdo ;svn ;thinkphp ;brophp ;yii
你所熟悉的PHP论坛系统有哪些?
Discuz
你所熟悉的PHP商城系统有哪些?
Ecshop
你所熟悉的PHP开发框架有哪些?
Brophp,thinkphp
说说你对缓存技术的了解?
缓存技术会把动态内容缓存到文件里。在特定的一段时间内,当访问动态页面时,能够直接调用缓存文件,这样就无需再次去访问数据库了。
2、使用memcache可以做缓存。
你所知道的设计模式有哪些?
工厂模式、策略模式、单元素模式、观察者模式、命令链模式
说说你对代码管理的了解?常使用那些代码版本控制软件?
一个项目通常由一个团队来开发。团队中的每个人会把自己写好的代码提交到版本服务器。项目负责人会按照版本对这些代码进行管理。这样做方便了版本的控制,也提高了开发效率,还能保证在需要的时候可以回到旧版本。
常用的版本控制器:SVN
说说你对SVN的了解?优缺点?
代码在版本服务器中进行集中管理。
- 对权限控制也较为方便。
缺点:不能随意修改服务器项目文件夹。
怎么找到PHP.ini的路径?
通常在 php 的安装目录当中,也在 window 系统的 windows 目录之中。
PHP加速模式/扩展?PHP调试模式/工具?
Zend Optimizer加速扩展
调试工具:xdebug
你常用到的mysql命令?
Show databasesShow tablesInsert into 表名() values()Update 表名 set 字段=值 where ...Delete from 表名 where ...Select * from 表名 where 条件 order by ... Desc/asc limit ... Group by ... Having ...
进入mysql管理命令行的命令?
Mysql -uroot -p 回车 密码
show databases; 这个命令的作用?
显示当前mysql服务器中有哪些数据库
show create database mysql 这个命令的作用是什么?
显示创建数据库的sql语句
show create table user 这个命令的作用是什么呢?
显示创建表的sql语句
desc user; 这个命令的作用?
查询user表的结构
解释“select * from user;”这个命令的作用是什么?
获取select相关信息
show processlist; 这个命令的作用?
显示哪些线程正在运行
SHOW VARIABLES; 这个命令的作用?
显示系统变量和值
SHOW VARIABLES 这个命令的作用是什么?它用于展示像 '%conn%' 这样的相关变量信息。
显示系统变量名包含conn的值
LEFT JOIN 写一个SQL语句?
SELECT A.id,A.class FROM A LEFT JOIN B ON A.cid=B.id
in 的作用是什么?not ni 并不存在,所以不存在其作用一说。exist 的作用又是什么?not exist 的作用又是什么?它们之间有怎样的区别呢?
in在什么中
Not in 不在什么中
Exists 存在
Not exists 不存在
怎么找到数据库的配置文件路径?
在数据库安装目录下,my.ini
简述Linux下安装PHP的过程?
安装软件之前先安装编译工具gcc、gcc-c++
拷贝源码包,解包解压缩
Cd /lamp/php进入php目录
./configure 进行了指定安装目录和配置文件目录的操作,指定的安装目录为 /usr/local/php,指定的配置文件目录为 /usr/local/php/etc
Make 编译
Make install安装
简述Linux下安装Mysql的过程?
Groupadd mysql 添加一个用户组mysqlUseradd 在 MySQL 中添加一个用户,并指定其分组为 MySQL。Cd /lamp/mysql 进入mysql目录使用的是 /usr/local/mysql/ 作为前缀,并且带有所有额外的字符集。MakeMake all
简述Linux下安装apache的过程?
Cd /lamp/httpd 进去apache软件目录./configure –prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-aprMakeMake all
HTML/CSS/DIV/Javascritp:
设计一个页面,其中包含 4 个 div。第一个 div 的宽度为 960px 且居中显示;第二个 div、第三个 div 和第四个 div 共同将 960px 进行 3 等分。
<style>Body{ Text-align:center; Margin:0; Padding:0; }#box{ Width:960px; Margin:0 auto; }.small{ Width:320px; Float:left; }style><div id=’box’><div class=’small’>div><div class=’small’>div><div class=’small’>div>div>
如何用 javascript 获取一个 input 的值呢?又如何获取一个 input 的属性呢?
document.getElementById(‘name’).value;document.getElementById(‘name’).type;
如何使用 Jquery 获取一个 input 的值呢?如何获取一个 input 的属性呢?
(“input[name='aa']“).val();(“input[name='aa']“).attr(‘type’);
5. 使用 `send` 方法发送请求,将序列化后的数据作为参数传入。
var xmlhttp;if(window.XMLHttpRquest){xmlhttp=new XMLHttpRequest();}else if(window.ActiveXObject){xmlhttp=new创建一个 ActiveXObject 对象,其类型为‘Microsoft.XMLHTTP’。}xmlhttp.open(‘GET’,’1.php?aa=name’,true);xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){var text=xmlhttp.responseText;}}}xmlhttp.send(null);
简述Cookie的设置及获取过程
设置COOKIE的值:
Setcookie(名称,值,保存时间,有效域);
获取值:$_COOKIE['名称'];
面向对象中接口和抽象类的区别及应用场景?
类如果有抽象方法,就被称为抽象类。抽象类中并非一定只有抽象方法。抽象方法必须要用 abstract 关键字来定义。
接口中的方法全部为抽象方法,且这些方法无需使用 abstract 来进行定义。
当有多个属于同类的类需要设计一个上层时,通常会将其设计为抽象类。当有多个属于异构的类需要设计一个上层时,通常会将其设计为接口。
用面向对象来实现A对象继承B和C对象
Interface B{ ... }Interface C{ ... }Class A implements B,C{ ... }
写出Smarty模板引擎中你最常用的关键词
Assign Display ForeachSection Loop Item$smarty Now Const get
l 增加一个字段性别sex,写出修改语句
Alert table user add sex enum(’0′,’1′);
查询出年龄介于20岁到30岁之间的用户
Select * from user where age>20 and age<30
如果是一个Web频繁访问的查询,上题的查询如何优化?
可以为 where 后面的字段“age”建立索引,同时也能够为语句建立存储过程。
echo(),print(),print_r()的区别?
Echo,print是PHP语句, print_r是函数,Print只能打印出像 int 和 string 这样的简单类型变量的值,并且有返回值。print_r()能够将复杂类型变量的值进行打印,像数组以及对象等。echo 输出一个或者多个字符串,无返回值
什么是模板技术、能够使HTML和PHP分离开使用的模板?
模板技术就是使程序的逻辑代码和界面分开的技术。
以下模板能够使 HTML 和 PHP 分开:Smarty;Template;PHPlib Template;FastTemplate
对于大流量的网站,您采用什么样的方法来解决访问量问题?
对程序进行优化,同时对数据库进行优化。倘若程序和数据库已经处于最优化的状态,那么就采用以下的解决方法。
1、确定当前服务器设备是否满足流量需求。
使用 Memcache 缓存技术,将动态内容缓存于文件内。动态网页能够直接调用这些文件,无需再次访问数据库。
禁止外部盗链。因为图片和文件的外部盗链会给服务器带来大量的负载压力。可以通过 refer 来禁止外部盗链,也可以使用 apache 来配置禁止盗链。
控制大文件的下载。对于非 SCSI 硬盘而言,大文件的下载会占用大量资源,从而致使服务器的响应能力下降。
5、使用不同的主机分流主要流量,使服务器均衡负载。
使用流量统计软件来进行统计分析网站流量。这样就能知晓哪些地方耗费了大量的流量,同时也能清楚哪些页面需要再次进行优化。
mysql_fetch_row 与 mysql_fetch_array 有哪些区别?
Mysql_fetch_array 可以从结果集中取出一行,既可以作为索引数组,也可以作为关联数组,或者两种方式都有。
实现中文字串截取无乱码的方法
Mb_substr();
用PHP写出显示客户端IP与服务器IP的代码
获取客户端的 IP 地址,是通过 $_SERVER(“REMOTE_ADDR”); 来实现的。
获取服务器端的 IP,即 $_SERVER["SERVER_ADDR"] 。
有一个网页地址,例如 PHP 开发资源网的主页地址。那么,怎样才能获取到这个网页地址的内容呢?
获取网页内容:
$url=”http://www.phpres.com/index.html“;$str=file_get_contents($url);或 $ch=curl_init();使用 curl_setopt 函数设置 $ch 的选项 CURLOPT_URL,将其值设置为空字符串。curl 对 $ch 进行设置选项操作,将 CURLOPT_HEADER 这个选项设置为特定值。0);curl_exec($ch);curl_close($ch);
请写一个函数验证电子邮件的格式是否正确
function checkemail($email){echo preg_match(‘/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+\.[0-9如果邮箱地址符合正则表达式“[a-zA-Z]+@[a-zA-Z]+.[a-zA-Z]+$”,则“email 格式正确”;否则,“email 格式不正确”。}
简述如何得到当前执行脚本路径,包括所得到参数
获取当前页面的完整路径和参数的方式是使用 $_SERVER['SCRIPT_FILENAME'] 与 $_SERVER['REQUEST_URI'] 进行组合。
获取参数:服务器环境变量中的 QUERY_STRING 这个值。
JS表单弹出对话框函数是?获得输入焦点函数是?
Alert();focus();
写一个函数,算出两个文件的相对路径
如 $a = ’/a/b/c/d/e.php’;
$b = ’/a/b/12/34/c.php’;
计算出$b 相对于$a 的相对路径应该是将()添上
"cnblogs.com/a/b/c/d/e.php" 被赋值给 $a ;
$b 拥有值 "cnblogs.com/a/b/12/34/c.php";
$ainfo=parse_url($a);$binfo=parse_url($b);$apath=ltrim($ainfo['path'],'/');$bpath=ltrim($binfo['path'],'/');$arr=explode('/',$apath);$brr=explode('/',$bpath);$flag=false;for($i=0;$i$arr );$i++){if($arr[$i]!==$brr[$i]){$ab[$i]='..';if(!$flag){for($j=$i;$j$brr );$j++){$bb[]=$brr[$j];}$flag=true;}}}$cha=array_merge($ab,$bb);$cha=implode('/',$cha);print_r($cha);
写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
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 与空字符串连接后的结果。即 $files 数组中的 $file 位置被赋予了 $dir 路径下的目录内容列表(不包括.和..)。"/" . $file);}else {$files[] = $file;}}}closedir($handle);return $files;}}
数据库索引有几类,分别是什么?什么时候该用索引?
普通索引、主键索引、唯一索引
并非所有的数据库使用索引的方式都相同。一般来说,只有当经常查询某一列中的数据时,才需要在表上创建索引。
写几个魔术方法并说明作用?
__call()当调用不存在的方法时会自动调用的方法
__autoload()在实例化一个还未被定义的类时,会自动调用此方法来加载类文件。
__set()当给未定义的变量赋值时会自动调用的方法
__get()当获取未定义变量的值时会自动调用的方法
构造方法是 __construct(),在实例化类的时候会自动被调用。
__destroy()销毁对象时自动调用的方法
当对一个未定义的变量调用 unset() 时,会自动调用该方法。
isset()在对一个未定义变量调用 isset()方法时会自动被调用的方法
__clone()克隆一个对象
__tostring()当输出一个对象时自动调用的方法
$_FILES 的意思是什么?
它们都是PHP预定义变量
$_REQUEST用来获取post或get方式提交的值
$_POST用来获取post方式提交的值
$_GET用来获取get方式提交的值
$_COOKIE用来获取cookie存储的值
$_SESSION用来获取session存储的值
$_FILES用来获取上传文件表单的值
数组中下标最好是什么类型的,为什么?
数组的下标最好是数字类型的,数字类型的处理速度快。
++i和i++哪一个效率高,为什么?
i++的效率比 i 低,原因是 i++多了一个返回 i 的过程,而++i 没有。
magic_quotes_gpc()的含义是什么?magic_quotes_runtime()的含义是什么?
Magic_quotes_gpc()存在于 php 配置文件中。若将其设置为 on,就会自动对 POST、GET、COOKIE 中的字符串进行转义,并且会在‘之前加上\。
Magic_quotes_runtime()是 php 里的一个函数。当参数为 true 时,它会对从数据库中取出的单引号、双引号以及反斜线自动加上反斜杠进行转义。
框架中什么是单一入口和多入口,单一入口的优缺点?
1、多入口就是通过访问不同的文件来完成用户请求。
单一入口指web程序所有的请求都指向一个脚本文件的。
单一入口便于控制权限,并且能够方便地对 http 请求进行安全性检查。
缺点:URL看起来不那么美观,特别是对搜索引擎来说不友好。
你对Memcach的理解,优点有哪些?
Memcache 是一种缓存技术。它能在特定时间内,把动态网页解析后保存到文件里。当下次访问时,动态网页可直接调用这个文件,无需再次访问数据库。使用 memcache 做缓存的好处有:能提高网站的访问速度,还能减轻高并发时服务器的压力。
Memcache 具有以下优点:它很稳定;配置方面较为简单;能够实现多机分布式存储;在速度上表现很快。
关系型数据库中,索引是一个很重要的概念。请回答关于索引的几个问题:
a)索引的目的是什么?
1、快速访问数据表中的特定信息,提高检索速度
2、创建唯一性索引,保证数据库表中每一行数据的唯一性
3、加速表和表之间的连接
使用分组子句进行数据检索时,能够减少查询中分组的时间;使用排序子句进行数据检索时,也能够减少查询中排序的时间
b) 索引对数据库系统的负面影响是什么?
负面影响:创建索引以及维护索引会耗费时间,并且此时间会随着数据量的增多而增多;索引会占用物理空间,不仅表需要占用数据空间,每个索引也都需要占用物理空间;当对表进行增加、删除、修改操作时,索引需要进行动态维护,这就使得数据的维护速度降低了。
c) 为数据表建立索引的原则有哪些?
1、在最频繁使用的、用以缩小查询范围的字段上建立索引
2、在平频繁使用的、需要排序的字段上建立索引
d) 什么情况下不宜建立索引?
查询中很少涉及的列不宜建立索引,重复值比较多的列也不宜建立索引
对于某些特殊的数据类型,不适合建立索引。例如文本字段(text),以及值范围较少的情况等。
在 web 应用中,数据库的读取操作频率比写入操作频率要高很多。那么,怎样去对 MySQL 进行优化,以应对这种情况呢?
使用 memcache 缓存技术,把动态数据缓存到文件里。在访问动态页面时,能够直接调用缓存文件,无需再次访问数据库。通过这种方式,减少了查询数据库的次数。
如果网站的访问量较为庞大,那么能够将数据库读写服务器进行分离。可以运用多台服务器来对数据库查询进行处理,同时使用相对较少的服务器去处理数据库的写入和修改操作。
include与require的区别?
1.include()在执行文件时每次都要进行读取和评估
require()文件只会进行一次处理,实际上是文件内容替换了 require()语句。
2.require()通常放在PHP脚本程序的最前面
include()的使用与 require()相同。通常它被放置在流程控制的处理区段里。当 PHP 脚本文件读到 include()语句时,才会将其包含的文件读进来。这种方式能够使程序执行时的流程变得简单。
require()语句是一种语言结构,它不是真正的函数,能够像 PHP 的其他语言结构那样;include()语句也是一种语言结构,同样不是真正的函数,也可以像 PHP 的其他语言结构一样。
这两种语句与 include()、require()的唯一区别是,如果文件中的代码已经被包括了,它们就不会再次包括。
require()执行时未能包含文件,于是停止了执行,并给出了错误(属于致命类型)。
include()常用于动态包含.
通常是自动加载的文件,即使加载出错,整个程序还是继续执行