一些總結
1.本地IP$_SERVER[‘REMOTE_ADDR‘] 服務器端IP$_SERVER[‘HTTP_HOST‘]
2.對於大流量的網站,您采用什麽樣的方法來解決訪問量問題?
確認服務器硬件是否支持當前流量,用nginx作為服務器實現負載均衡,數據庫讀寫分離,搭建主從、主主服務器,優化數據表、優化查詢語句,程序功能規則、防止外部盜鏈、控制大文件的下載
3.require和include的區別,為避免多次包含同一文件,可用(?)語句代替它們
require是無條件包含,如果在一個流程內加入require,無論引入成功與否都會先執行require
include有返回值,require 沒有
包含文件不存在時,require會返回一個致命的錯誤,而include會繼續執行
require_once include_once
4.如何修改session的生命周期。
session_set_cookie_params()
5.http狀態碼。
200:請求成功。
301:頁面已永久重定向
303:查看其它地址
304:所請求的資源未修改
403:服務器已拒絕請求
404:服務器無法找到頁面
500:服務器內部錯誤,無法完成請求。
6.php中傳值和傳引用的區別。
按值傳遞:函數範圍內任何改變在函數外部都會被忽略。
按引用傳遞:函數範圍內任何改變在函數外部也能反映。
按值傳遞時,必須復制值,在值的長度較長時,會影響效率。按引用傳遞時,不需要復制值,對於性能提高有好處。
7.寫一個函數,統計文件夾下所有文件的大小。
答:
function dirSize($path){
//2.打開目錄
$resource = opendir($path);
//定義一個統計大小的變量
$count = 0;
//3.讀取目錄
while($file = readdir($resource)){
//過濾特殊目錄
if($file=="." || $file==".."){
continue;
}
//拼接完整的文件路徑
$filename = rtrim($path,"/")."/".$file;
//判斷是不是一個文件
if(is_file($filename)){
$count+=filesize($filename);
}
//判斷是不是一個目錄
if(is_dir($filename)){
$count += dirSize($filename);
}
}
//4.關閉目錄
closedir($resource);
//返回統計目錄的大小
return $count;
}
8.燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若幹條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?
先用2根繩子,其中1根一頭點火,另1根兩頭點火,當第2根燒完的時候(即半小時),把第1根的另一頭也點火,則當第1根燒完的時候,時間為45分鐘;再另外用第3根繩子兩頭同時點火,燒完為30分鐘,加起來為1小時15分鐘.
9.8個鐵球,中間有一個是空心的,請問用天平稱最少幾次稱出?那18個呢?
把8個鐵球編號為1到8.
在天平兩邊個放上3個.1到6號,如果相等 那麽再把7、8號放上,即可
如果1到6號不相等.1.2.3號或是4.5.6號 把1.2號放上,即可 ,如果是4.5.6號照做即可.
所以8個鐵球只用2次稱.
18個鐵球,也按號1到18號
先拿出17.18號
一邊各放8個鐵球.如果1到8號和9到16號相等,那17.18稱一次即可.只需兩次
如果不相等 責排除17.18 在1到8號 或是9到16號中 余下就按照上面的8個做法來做.
則需要三次.
10.什麽是面向對象?主要特征是什麽?
面向對象是程序的一種設計方式,它利於提高程序的重用性,使程序結構更加清晰。
主要特征:封裝、繼承、多態
11.date_default_timezone_set();設置默認時區
12.開啟php錯誤報告的方法。
display_errors = On
13.
function myfunc($argument)
{
echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable)=".myfunc($variable);
結果為:20myfunc(10)=
14. php開發接口
目錄結構:App 項目目錄
Config 配置目錄
Core 核心目錄
15.php的閉包。
閉包是引用了自由變量的函數,這個被應用的自由變量將和這個函數一同存在,即使離開了創建它的環境也一樣,所以閉包也可認為是有函數和與其相關引用組合而成的實體。
在一些語言中,在函數內定義另一個函數的時候,如果內部函數引用到外部函數的變量,則可能產生閉包。
16.數據庫優化。
選取合適的字段:長度盡可能小、數字>時間>枚舉>字符串,盡量不要使用null類型。
數據庫分庫分表。
數據庫讀寫分離,搭建主從主主服務器
中文分詞 scws
三範式標準:原子性、無冗余性、唯一性
使用JOIN連接代替子查詢
使用UNION來代替手動創建的臨時表
多個語句後面跟一個UNION
使用事務處理
$pdo = new PDO(‘mysql:host=localhost;dbname=test;charset=utf8;‘, ‘root‘, ‘‘);
$pdo -> beginTransaction();
$num1 = $pdo->exec();
if (!num1){$pdo->rollback();}
$pdo->commit();
鎖定表
LOCK TABLE inventory WRITE SELECT Quantity FROM inventory WHERE Item=‘book‘;
UPDATE inventory SET Quantity=11 WHERE Item=‘book‘;UNLOCKTABLES
使用外鍵
使用索引
優化查詢語句
首先,最好是在相同類型的字段間進行比較的操作
其次,在建有索引的字段上盡量不要使用函數進行操作
最後,避免使用like關鍵字
17.sql語句優化
避免全表掃描,在where及order涉及的列上建立索引。
應盡量避免判斷null值。
應盡量避免在where子句中使用!=和<>操作符,否則將放棄索引而進行全表掃描。
應盡量避免在where子句中使用or來連接條件
謹慎使用in和not in
能用between就不要用in
用exist代替in
應盡量避免使用like關鍵字
應盡量避免在where子句中對字段進行函數操作
數據量大的表使用join,要先分頁在join
避免頻繁創建和刪除臨時表。
一些總結