PHP練習題三

1.用PHP打印出前一天的時間格式是2006-5-10 22:21:21。 echo date(‘Y-m-d H:i:s’, strtotime(‘-1 days’));javascript

2.不使用第三個變量交換兩個變量的值。$a = "php";$b = "java";$a = explode('-',$a.'-'.$b); $b =$a[0];$a =$a[1];php

3. 簡述如何獲得當前執行腳本路徑,包括所獲得參數。答:$script_name = basename(__file__); print_r($script_name);css

4. error_reporting(2047)什麼做用?答:PHP 顯示全部錯誤 E_ALL.html

5. PHP中heredoc是一種特殊的字符串,它的結束標誌必須?答:結束標識符所在的行不能包含任何其它字符除。java

10.表單中 get與post提交方法的區別:get是發送請求HTTP協議經過url參數傳遞進行接收。而post是實體數據,能夠經過表單提交大量信息.linux

11.數組的查找方法:(1) 順序查找——從頭至尾逐個查找。(2)二分查找——使查找的範圍不斷縮小一半,因此查找效率較高。ios

12.數據的排序方法:(1)冒泡排序 (2)選擇排序 (3)插入排序nginx

12. 如何修改SESSION的生存時間:setcookie() and session_set_cookie_params($lifeTime)redis

14. 用PHP寫出顯示客戶端IP與服務器IP的代碼: $_SERVER['SERVER_ADDR']服務器IP,$_SERVER['REMOTE_ADDR']客戶端IP,$_SERVER['REMOTE_HOST']當前用戶主機名,$_SERVER['PHP_SELF']當前腳本的名稱(不包括路徑和查詢字符串),$_SERVER['HTTP_REFERER']連接到當前頁面的前一頁面的 URL 地址。sql

18.HTTP 狀態中30二、40三、 500代碼含義: 302:臨時轉移成功,請求的內容已轉移到新位置;403:禁止訪問;500:服務器內部錯誤。

18.在HTTP 1.0中,狀態碼 401 的含義是(未受權);若是返回「找不到文件」的提示,則可用 header 函數,其語句爲:header("HTTP/1.0 404 Not Found");

20. isset() 和 empty() 區別:isset()判斷是否存在,存在就爲真,無論是否爲假。empty()判斷是否爲空,爲空時爲真值,不存在也爲真值。

24. 引用和普通變量的區別:普通變量是開闢了一塊新的存儲空間,引用是直接指向其餘的存儲空間。

25. 請說明php中傳值與傳引用的區別:按值傳遞時,php必須複製值,特別是對於大型的字符串和對象來講,這將會是一個代價很大的操做。按引用傳遞則不須要複製值,對於性能提升頗有好處。 

31. php://input和$_POST有什麼區別:$_POST 與 php://input能夠取到值,$HTTP_RAW_POST_DATA 爲空。$_POST 以關聯數組方式組織提交的數據,並對此進行編碼處理,如urldecode,甚至編碼轉換。 php://input 可經過輸入流以文件讀取方式取得未經處理的POST原始數據,php://input 容許讀取 POST 的原始數據。和 $HTTP_RAW_POST_DATA 比起來,它給內存帶來的壓力較小,而且不須要任何特殊的 php.ini 設置。php://input 不能用於 enctype="multipart/form-data"。

37.如何經過javascript判斷一個窗口是否已經被屏蔽:答:獲取open()的返回值,若是是null,就是屏蔽了。

1.假設a.html和b.html在同一個文件夾下面,用javascript實現當打開a.html五秒鐘後,自動跳轉到b.html:setTimeout( "go2b()",5000 );

2.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句(LoadModule php5_module "c:/php/php5apache2.dll")動態裝載PHP模塊,而後再用語句(AddType application/x-httpd-php .php)使得Apache把全部擴展名爲php的文件都做爲PHP腳本處理。

3.一個函數的參數不能是對變量的引用,除非在php.ini中把(allow_call_time_pass_reference boolean)設爲on

1.MYSQL取得當前時間的函數是:now();格式化日期的函數是:date()。

2.數據庫中的事務是什麼:事務就是一系列的操做,這些操做完成一項任務。只要這些操做裏有一個操做沒有成功,事務就操做失敗,發生回滾事件。即撤消前面的操做,這樣能夠保證數據的一致性。並且能夠把操做暫時放在緩存裏,等全部操做都成功有提交數據庫,這樣保證費時的操做都是有效操做。

5. MyISAM 和 InnoDB 的基本區別:MyISAM不支持事務,而InnoDB類型支持。MyISAM強調的是性能,其執行速度比InnoDB類型更快,可是不提供事務支持,而InnoDB提供事務支持以及外部鍵等高級數據庫功能。

7.對於大流量的網站,您採用什麼樣的方法來解決訪問量問題?①PHP生成靜態文件 ②mamcached緩存技術 ③升級硬件 ④優化數據庫訪問 ⑤禁止外部的盜鏈 ⑥控制大文件下載 ⑦負載均衡。

8.優化sql語句執行效率的方法:①SELECT子句中避免使用‘*’ ②用Where子句替換HAVING子句 ③避免在索引列上使用計算 ④提升GROUP BY 語句的效率,將不須要的記錄在GROUP BY 以前過濾掉 ⑤儘可能把字段設置NOT NULL⑥使用鏈接(JOIN)來代替子查詢 ⑦使用外鍵,優化鎖定表 ⑧索引字段上儘可能減小函數操做。

9.apche 和 nginx 的優缺:nginx輕量級,比apache佔用更少的內存及資源,抗併發,nginx處理請求是異步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高性能。apache 相對於nginx 的優勢:rewrite比nginx 的rewrite 強大,少bug,穩定。(須要性能用nginx,求穩定就apache)。

10.要想透過代理服務器取得客戶端的真實 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取。

11.重寫list_010_1.html到list.php?city=010&page=1須要在Apache配置中增長以下RewriteRule_________。 答:RewriteRule  /list-([0-9]+)-([0-9]+)\.html$  /list.php?fid=$1&page=$2。分析:([0-9]+) 表示1個或多個數字, rewirterule 語句分前面部分和後面部分,意思是把前面部分重寫成後面的語句,每一個括號內的內容爲一個單元,第一個括號在後面就用$1 代替,第二個括號用$2代替,依次類推。

12.Redis和memcache的區別有哪些:memecache 把數據存在內存之中,斷電後會掛掉,數據不能超過內存大小。redis有部份存在硬盤上,這樣能保證數據的持久性。redis在數據支持上要比memecache多;memcache性能要高於redis。

13.關於網站靜態文件訪問提升性能的方法:減小生成cookie,將靜態文件(如圖片、css、js 等)放在不一樣域下;將JS代碼中沒必要要的空格去掉。

14.舉例說明在開發過程當中用什麼方法來加快頁面的加載速度:頁面壓縮技術(壓縮js),使用存儲過程,把CSS樣式放在頭部、把js代碼放在尾部,頁面緩存,使用Gzip壓縮文檔,圖片使用height和width屬性一個目錄地址,而後就直接加載默認文檔index.html或index.php就好了。這樣服務器就不用花時間來分析這個地址,也起到了必定加速的做用。

15.php中session的運行機制:session是在服務器端保持用戶會話數據的一種方法,它以文件的形式存儲在服務器端,session將客戶端和服務器端創建一一聯繫,每一個客戶端都得有一個惟一標識(也就是session_id),服務器經過這個session_id來區分不一樣的客戶端,session_id默認創建一個名叫」PHPSESSID」的cookie(能夠經過php.ini修改session.name值指定)存儲在客戶端,咱們也可讓session_id以地址欄來進行傳輸(修改php.ini中session.use_trans_sid等參數來改變session_id的傳輸方式),客戶端將session_id傳輸給服務器端,服務器以傳輸過來的session_id來找到相對應的文件,讀取的時候對文件內容進行反序列化就獲得session的值,保存的時候先序列化再寫入。

16. [Mongodb優勢] ①弱一致性(最終一致),更能保證用戶的訪問速度 ②文檔結構的存儲方式能更便捷的獲取數據 ③支持大容量的存儲 ⑤第三方支持豐富 ⑥性能優越。 [Mongodb缺點]不支持事務,佔用空間大,沒有成熟的維護工具。

17.禁用COOKIE後SESSION還能用嗎:PHP中經過相關的配置,可讓Session不依賴Cookie而存在。這是由於Session儲存於服務器端(默認以文件方式存儲Session),根據客戶端提供的Session ID來獲得用戶的文件,取得變量的值,Session ID可使用客戶端的Cookie或者Http1.1協議的Query_String(就是訪問的URL的「?」後面的部分)來傳送給服務器,而後服務器 讀取Session的目錄。session是經過cookie來工做的,session和cookie之間是經過$_COOKIE['PHPSESSID']來聯繫的,經過$_COOKIE['PHPSESSID']能夠知道session的id,從而獲取到其餘的信息。

 

1:列舉linux系統經常使用信號及使用場景:信號的名稱是在頭文件signal.h中定義的,信號都以SIG開頭,經常使用的信號以下:SIGALRM、SIGHUP、SIGINT、SIGKILL、SIGPIPE、SIGTERM、SIGUSR1.SIGUSR2。

2:說說linux下的find命令和grep命令的區別:grep是將一段數據通過分析後,取出咱們所想要的,和cut相似。find用於搜尋檔案,可是速度慢,佔硬盤,一般都是先使用 whereis 或者是 locate檢查,若是找不到才用find。

3:linux下如何看到當前機器運行狀況(內存使用,cpu使用等)?top命令或者free命令,包含了緩存。若是要查看應用程序真正的內存使用狀況,應該是used-cached-buffers。

4:請解釋下列10個shell命令的用途(top,ps,mv,find,df,cat,chmod,chgrp,grep,wc):top:對系統處理器的狀態實時監視;ps:哪些進程正在運行和運行的狀態;mv移動文件;find:搜索文件;df:磁盤信息;cat:查看文件內容;chmod:設置權限;Chgrp:設置所屬組;wc:統計文件中的字節數、字數、行數。

7:linux下,tail,grep,awk命令如何使用?

8:linux下,如何分析日誌文件?(工具)

10:在linux服務器負載高的時候,你會經過哪些命令來查找緣由?必須搞清楚的問題有:故障的表現是什麼?無響應?報錯?故障是何時發現的?故障是否可重現?有沒有出現的規律(好比每小時出現一次)....(有誰在? w、last;以前發生了什麼? history;如今在運行的進程是啥:pstree –a、ps aux。)

11:怎鏈接一臺服務器(ssh命令,ssh root@192.168.1.1)?怎麼拉下來一個文件和上傳文件:ssh,ftp,secureCRT.

12:linux 大文件的分割和查詢:分割:split 命令,例子:split -b 100m filename ;查詢:find / -size +20000k -exec ls -lh {} \;

13:請書寫Linux/Unix命令,將文件/etc/my.cnf複製到/tmp目錄下: cp /etc/my.cnf/ /tmp

14:查看linux負載的命令(CPU:uptime,內存:vmstat free,硬盤:iostat),查看某個進程的命令(ps aux|grep 進程名),linux經常使用軟件安裝方式有哪幾種(yum,apt)。

15:linux和windows環境開發須要注意哪些問題:windows用來作前段開發圖形界面之類的比較好,linux是搭建服務器這方面比較牛。

18: Linux/unix命令,查看全部含有關鍵詞"php"的進程:ps -aux|grep php

19:建立「/home/dir1」的目錄:mkdir -p /home/dir1

20:解壓縮archive.tar.gz : tar -zxvf archive.tar.gz

28:$# 是傳給腳本的參數個數;$0 是腳本自己的名字;$1 是傳遞給該shell腳本的第一個參數;$2 是傳遞給該shell腳本的第二個參數;$@ 是傳給腳本的全部參數的列表;$* 是以一個單字符串顯示全部向腳本傳遞的參數,與位置變量不一樣,參數可超過9個;$$ 是腳本運行的當前進程ID號;  $? 是顯示最後命令的退出狀態,0表示沒有錯誤,其餘表示有錯誤。

29:統計日誌相關記錄數 awk:awk [-v 變量名=變量值] [-Fre] [--] '模式 { 語句 }' 變量名=變量值 文件名 

30、域名解析發起TCP的3次握手:創建TCP鏈接後發起http請求->服務器端響應http請求,瀏覽器獲得html代碼->瀏覽器解析html代碼,並請求html代碼中的資源->瀏覽器對頁面進行渲染呈現給用戶

3一、watch -n 1 :是每隔一秒查看後面跟着的命令結果;& 後臺運行這個命令

 

1.框架中什麼是單一入口和多入口?單一入口是什麼優缺點?答案:單一入口一般是指一個項目或者應用具備一個統一(但並不必定是惟一)的入口文件,也就是說項目的全部功能操做都是經過這個入口文件進行的,而且每每入口文件是第一步被執行的。多入口即經過訪問不一樣的 php 文件運行對應的功能。優勢:單一入口應用程序的全部http請求都是經過 index.php 接收並轉發到功能代碼去的,因此咱們在 index.php 裏面就能完成許多實際工做。

缺點:任何事情都有兩面性,單一入口應用程序也不例外。因爲全部 http 請求都是針對 index.php,因此應用程序的 url 看起來確實不那麼美觀。特別是對搜索引擎來講很不友好。

2.列舉你所使用過的mvc框架,簡述它們的優缺點;[ThinkPHP]優勢:開發速度快,利於拓展,源代碼公開;缺點:不靈活,耦合太深,不少組件無法替換。[Yii]優勢:可配置,可重用,可擴展組件;缺點:文檔實例較少,英文太多。[CI]優勢:配置簡單,所有的配置使用PHP腳原本配置,執行效率高,文檔詳細;缺點:缺少擴展能力,只可以知足小型應用。

3.用框架(mvc)作一個項目時,沒有手冊提供模板標籤的使用方法,怎麼辦:查看源代碼。

4.thinkphp的數據模型中的create方法,大概都作了那些事情:create():建立數據對象、數據自動驗證、數據自動完成、令牌驗證、字段類型檢查。

5.若是模板是用smarty模板,怎樣用section語句來顯示一個名爲$data的數組,若用foreahc語句又要怎樣顯示呢:{section name=sn loop=$data}{$news[sn].id}{/section} 、{foreach from=$data item=foo}{$foo}{/foreach}

十二、什麼是命名空間,如何聲明和使用:命名空間是爲了把一些類和類的實例更好地管理而定義的把這些類和實體集合起來的一個團體,它是_Namespace system class的一個實例,或者是_Namespace類的一個派生類,_Namespace類只有一個屬性:Name。經過這個屬性用戶能夠把某個命名空間和其餘的命名空間分開來,命名空間的Name不能包括頭綴和後綴的下劃線。由關鍵字 namespace後邊接着命名空間名字,以後接一對花括弧括住的一塊聲明和定義;

 

1.php的面向對象的主要關鍵字:final使類不被繼承,方法不被覆蓋;parent能夠調用父類成員中的成員變量,成員方法和常量;self,能夠調用當前類中的靜態成員和常量;const 在類中定義常量;static靜態屬性和靜態方法,不須要被實例化就能直接使用;clone對象的克隆。

2.接口起什麼做用,抽象類起什麼做用:接口是對外開放的,調用接口而後重寫其中的方法,若是你不要使用接口裏面的方法,那麼接口就沒有意義了,這樣也是爲了總體代碼的控制性。

3.單例模式:保證一個類中,有且只有一個實例存在並提供一個訪問點供全局訪問,該實例能夠被全部的程序來訪問。使用場景:①當要用一個類時,又要用該類中的一個實例;②new 來建立實例時會給程序形成資源的浪費,並且實例越多也很差控制。③不一樣的線程調用時,可能會引發不一樣步的現象。

4.寫出你經常使用的php魔術方法:__construct(),構造函數;__destruct(),析構函數;__get(),得到一個類的成員變量時調用;__set(),設置一個類的成員變量時調用;__callStatic(),用靜態方式中調用一個不可訪問方法時調用;__call(),當調用類實例中不存在的函數時自動執行;__isset(),判斷類中私有屬性或方法是否存在時自動調用;__unset(),清除類中私有變量時自動調用。

相關文章
相關標籤/搜索