答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()