答QPS以及IOPS 正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态。 (1)QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql > show global status like 'Question%';
apache是一个请求对应一个线程的模式,无论那个请求是否须要读写都会分配一个线程,而nginx则是异步非阻塞模型,只有当请求须要读写的时候才会拿出来处理。
nginx
PEAR也就是为PHP扩展与应用库(PHP Extension and Application Repository),它是一个PHP扩展及应用的一个代码仓库
fastcgi和cgi都是协议,fastcgi是管理cgi的
一、Notice:这些都是一些很是正常的信息,而非重大错误,甚至有一些都不会展现给用户。 二、Warning:这类是稍微严重一些的错误,错误会展现给用户,但不影响程序的输出。 三、Fatal errors:这些是很是严重的错误,好比要访问一个不存在的PHP类。
200 - 服务器成功返回网页 301 - 永久移动,请求的网页已被永久移动到新位置 304 - 缓存网页未修改,直接返回内容 401 - 未受权 403 -(已禁止) 服务器拒绝请求 404 - 请求的网页不存在,网页不存在。 500 - 服务器遇到错误,没法完成请求。 503 - 服务器暂时不可用,目前没法使用服务器(因为超载或进行停机维护)。一般,这只是一种暂时的状态。 HTTP 状态代码的完整列表
define ('Newconstant', 30); 答:使用const使得代码简单易读,const自己就是一个语言结构,而define是一个函数。另外const在编译时要比define快不少。 一、const用于类成员变量的定义,一经定义,不可修改。Define不能够用于类成员变量的定义,可用于全局常量。 二、Const可在类中使用,define不能 三、Const不能再条件语句中定义常量 四、const采用普通的常量名称,define能够采用表达式做为名称 五、const只能接受静态的标量,而define能够采用任何表达式 六、const定义的常量时大小写敏感,而define能够经过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。
5.4版本之后可使用Traits方法实现 5.4版本不能够。PHP类只能继承一个父类,并用关键字“extended”标识。
PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言。
MVC由Model(模型), View(视图)和Controller(控制器)组成,PHP MVC能够更高效地管理好3个不一样层的PHP代码。
Model:数据信息存取层。
View:view层负责将应用的数据以特定的方式展示在界面上。
Controller:一般控制器负责从视图读取数据,控制用户输入,并向模型发送数据php
cookie在客户端保存状态,session在服务器端保存状态。可是因为在服务器端保存状态的时候,在客户端也须要一个标识,因此session也可能要借助cookie来实现保存标识位的做用。 cookie包括名字,值,域,路径,过时时间。路径和域构成cookie的做用范围。cookie若是不设置过时时间,则这个cookie在浏览器进程 存在时有效,关闭时销毁。
若是设置了过时时间,则cookie存储在本地硬盘上,在各浏览器进程间能够共享。html
session存储在服务器端,服务器用一种散列表类型的结构存储信息。当一个链接创建的时候,服务器首先搜索有没有存储的session id,若是没有,则创建一个新的session,将session id返回给客户端,
客户端能够选择使用cookie来存储session id。也能够用其余的方法,好比服务器端将session id附在URL上。mysql
区别: (1).cookie在本地,session在服务器端。 (2).cookie不安全,容易被欺骗,session相对安全。 (3).session在服务器端,访问多了会影响服务器性能。 (4).cookie有大小限制,为3K 多服务器共享session能够尝试将session存储在memcache中。
http1.0 通常在2-6个 http1.0 通常在4-6个
POST根据PHP.ini文件配置(默认的是8M) GET大小限制在2kb
GET用于获取信息,不该该用于修改信息,POST可用于更新修改信息。 GET可传输数据大小和URL有关,而POST没有限定大小,大小和服务器配置有关。 GET放在URL中,所以不安全,而pOST传输数据对于用户来讲是不可见的,因此相对安全。 在ajax: post不被缓存,get被缓存因此通常在请求结尾加Math.random(); SERVER端接受:由于在submit提交的时候是按不一样方式进行编码的,因此服务端在接受的时候会按照不一样的方式进行接受! 编码方式:若是传递数据是非-ASCII,那么GET通常是不适应的,因此在传递的时候会作编码处理!
$s = 'abc'; if ($s == 0) { echo 'is zero'; } else { echo 'is not zero'; } 答案:is zero 由于PHP是弱类型,类型是能够根据赋值改变
echo count(null); 答案:0 echo count(false); 答案:1 echo count(true); 答案:1 echo count("abc"); 答案:1 echo count(123); 答案:1
array_multisort()nginx
$reg = '#[a-z0-9-_.]+@[\w]{2,}\.[\w]+#is'; $rst = preg_match($reg, '34234wujunzhiai@163.com'); if($rst){ echo '正确'; }else { echo '错误'; }
答案:客户端 getenv('REMOTE_ADDR');
服务器端 getenv('SERVER_ADDR'); // gethostbyname('www.baidu.com');web
function get_max($a,$b,$c) { return ( $a > $b ? $a : $b ) > $c ? ( $a > $b ? $a : $b ) : $c; } echo get_max(1,2,3);
七、写出 访问 http://www.sina.com.cn 所需的报文头ajax
md5_file()
echo $_SERVER[PHP_SELF];
echo $_SERVER[HTTP_REFERER];redis
echo 是php语句, print和print_ r是函数,语句没有返回值,函数能够有返回值(即使没有用) print() 只能打印出简单类型变量的值(如int, string) print_r() 能够打印出复杂类型变量的值(如数组,对象)
一、pHp缓存 二、生成html静态页面 三、使用主辅数据库,把数据库的读写分开 四、使用负载均衡器和多台服务器
serialize() 序列化算法
unserialize() 反序列化
一、pHp程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后pHp会将网页档从新编译,让引入档成为原先网页的一部分。 二、pHp程序执行到include()时,每次皆会读取档案,故经常使用于流程控制的区段,如条件判断或循环中。 三、require() :若是文件不存在,会报出一个fatal error.脚本中止执行 四、include() : 若是文件不存在,会给出一个 warning,但脚本会继续执行 五、推荐使用require_once()和include_once(),能够检测文件是否有重复包含。
方法一: 将php.ini 中session.gc_maxlifetime 设置为 9999(默认为 1440)重启 apache 便可 方法二: $savepath = "./session_save_dir/"; $lifeTime = 24 * 3600; session_save_path($savepath); session_set_cookie_params($lifeTime); session_start(); 方法三: setcookie() 或session_set_cookie_params($lifeTime) 在pHp中,heredoc是一种特殊的字符串,它的结束标志必须? heredoc的语法是用"<<<"加上本身定义成对的标签,在标签范围內的文字视为一个字符串 <?php $str = <<<EOD I saw a dog yesterday. EOD; > 须要注意的是: 一、"<<<"后面的EOD是本身定义的标签名称,必需要成对,并且后面要加上分号表示结束。 二、结束的标签前面最好不要有空格,以避免发生错误
error_reporting() 用于设置php的侦听错误的级别.[用来配置错误信息回报的等级].
答案:至关于 error_reporting('E_ALL'); 输出全部的错误sql
isset($a) empty($a)
echo $arr[0];
答:echo $a{0} 或 echo substr($a,0,1)
public(公共) private(私用) protected(继承)
__construct() 构造函数 __destruct() 析构函数
四、php中web上传文件的原理是什么,如何限制上传文件的大小?数据库
pHp上传文件默认大小为2M,设置上传大小的配置项是upload_max_filesize,post_max_size设置一次pOST中pHp能接收的最大数据量,应该比upload_max_filesize大。
五、php防止sql注入式攻击,用什么函数转换字符串?
addslashes();
六、你经常使用的php字符串函数?
substr(),strtolower(),ucwords(),ucfirst(),strtoupper(),implode(),explode(),str_replace(),strpos(),strrev()
八、HTTp的通信协议是?
TCP
九、php中的文件读写操做,读取文件test.txt中前300字节的内容?
$handle=fopen("test.txt","r"); $contents=fread($handle,300); fclose($handle);
十一、写一个函数,尽量高效的,从一个标准 url 里取出文件的扩展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 须要取出 php 或 .php 答案1: function getExt($url){ $arr = parse_url($url); $file = basename($arr['path']); $ext = explode(".",$file); return $ext[1]; }
十二、php5中魔术方法函数有哪几个,请举例说明各自的用法
__construct() :实例化对象时被调用; __destuct():当删除一个对象或者对象操做终止是被执行; __call():调用对象不存在方法时被调用; __get():调用对象不存在的属性时被调用; __set():设置对象不存在的属性时被调用; __toString():打印一个对象时被调用,好比echo $obj,print($obj); __clone():克隆对象时被调用,好比$t = new Test();$tt = clone $t; __sleep():serialize以前被调用,若对象比较大,想作一些删除在序列化,能够考虑使用该方法; __wakeup():unserialize以前被调用,作些对象的初始化; __isset():检测对象是否存在属性的时候被调用,如 isset($c->name); __unset():unset一个对象属性时被调用,如:unset($c->name); __set_state():调用var_export时被调用,用__set_state的返回值做为 var_export的返回值 __autoload():实例化一个对象时,若是对应的类不存在,在该方法被调用 魔术常量: __LINE__:返回当前行号; __FILE__:返回文件的完整路径和文件名,若是用在包含文件里面,则返回包含文件名,自 php4.0.2开始, __FILE__老是包含一个绝对路径,而在此前的版本有时候会包含一个相对路径 __FUNCTION__:返回函数名称(自 php4.3.0新加的)。自php5起本常量返回该函数被定义时的名称,区分大小写,在php4中该值老是小写; __CLASS__:返回类的名称,自 php4.3.0新加的,自php5起本常量返回该类被定义时的名称,区分大小写,在php4中该值老是小写的; __METHOD__:返回类的方法名。 php5新加的
1三、简单说明pHp的垃圾收集机制是怎样的?
对变量有个引用计数,计数到0时变量被销毁
1四、请写一段pHp代码,确保多个进程同时写入同一个文件成功
代码: function writeData($path, $mode, $data){ $fp = fopen($path, $mode); $retries = 0; $max_retries = 100; do { if ($retries > 0) { usleep(rand(1, 10000)); } $retries += 1; }while (!flock($fp, LOCK_EX) and $retries <= $max_retries); if ($retries == $max_retries) { return false; } fwrite($fp, "$data\\n"); flock($fp, LOCK_UN); fclose($fp); return true; }
1五、你用什么方法检查php脚本的执行效率(一般是脚本执行时间)和数据库SQL的效率(一般是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在
php脚本的执行效率 1, 代码脚本里计时 2, xdebug统计函数执行次数和具体时间进行分析,最好使用工具winCacheGrind分析 3, 在线系统用strace跟踪相关进程的具体系统调用 数据库SQL的效率 sql的explain(mysql),启用slow query log记录慢查询 一般还要看数据库设计是否合理,需求是否合理等
echo microtime(); 返回当前时间戳 echo mktime(); 取得指定的时间戳
1六、求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
$begin = strtotime('2007-2-5');
$end = strtotime('2007-3-6');
echo ($end-$begin)/(24*3600);
1七、用php打印出前一天的时间格式是YYYY-MM-DD HH:II:SS
echo date('Y-m-d H:i:s', time()-24*3600); echo date('Y-m-d H:i:s', strtotime('-1 day')); 前一天 echo date('Y-m-d H:i:s', strtotime('-1 second')); echo date('Y-m-d H:i:s', strtotime('-1 minute')); echo date('Y-m-d H:i:s', strtotime('-1 hour')); echo date('Y-m-d H:i:s', strtotime('-1 day')); echo date('Y-m-d H:i:s', strtotime('-1 week')); echo date('Y-m-d H:i:s', strtotime('-1 month')); echo date('Y-m-d H:i:s', strtotime('-1 year'));
请写一个函数,实现如下功能:
字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。
function str_change($str) {
$str = str_replace ('_', ' ', $str); $str = ucwords($str); $str = str_replace (' ', '', $str); return $str; }
四、请简述操做系统的线程与进程的区别。列举LINUX下面你使用过的软件?
五、熟悉memcache/redis、MVC/REST架构、模板引擎、中间件的原理与应用者优先;
六、熟悉TCP/IP、HTTP协议者优先;
===============算法=====================
一、请使用伪语言结合数据结构冒泡排序法对如下一组数据进行排序 10 2 36 14 10 25 23 85 99 45。
$a = array(10,2,36,14,10,25,23,85,99,45); $count = count($a); for($j=1; $j<$count; $j++){ for($i=0; $i<$count-$j; $i++){ if($a[$i] > $a[$i+1]) { $t = $a[$i] ; $a[$i] = $a[$i+1] ; $a[$i+1] = $t ; } } } print_r($a);
============Mysql==========================
mysql_fetch_row() 从结果集中取得一行做为枚举数组 mysql_fetch_array() 从结果集中取得一行做为关联数组,或数字数组,或两者兼有
now() DATE_FORMAT(date , format) select now(); select curdate(); select curtime();
一、请简述数据库设计的范式及应用。
通常第3范式就足以,用于表结构的优化,这样作既能够避免应用程序过于复杂同时也避免了SQL语句过于庞大所形成系统效率低下
1NF:原子性 字段不可再分,不然就不是关系数据库; 2NF:惟一性 一个表只说明一个事物; 3NF:每列都与主键有直接关系,不存在传递依赖;
ANSWER:
第一范式:若关系模式R的每个属性是不可再分解的,再属于第一范式。
第二范式:若R属于第一范式,且全部的非码属性都彻底函数依赖于码属性,则为第二范式。
第三范式:若R属于第二范式,且全部的非码属性没有一个是传递函数依赖于候选码,则属于第三范式
一、建立新闻发布系统,表名为message有以下字段 (3分)
id 文章id title 文章标题 content 文章内容 category_id 文章分类id hits 点击量 答: CREATE TABLE `message`( `id` int(10) NOT NULL AUTO_INCREMENT, `title` VARCHAR(200) default NULL, `content` text, `category_id` int(10) NOT NULL, `hits` int(20), PRIMARY KEY(`id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
二、列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
name score 张三 语文 59 张三 数学 80 张三 英语 33 李四 语文 50 李四 数学 50 李四 英语 58 王五 语文 88 王五 数学 90 答:select name,sum(score<60) as gk,avg(score) as pj from student group by name having gk>=2;
============Javascript==========================
弹出对话框: alert(),prompt(),confirm() 得到输入焦点 focus()