Vagrant up vagrant halt vagrant sshphp
1.PHP基礎知識mysql
2.JavaScript、jQuery、AJAX基礎知識nginx
3.LINUX基礎知識git
4.MYSQL數據庫的基礎與優化redis
5.程序設計題算法
6.PHP框架基礎知識sql
7.算法、邏輯思惟(時間複雜度、空間複雜度、內置函數 重要 )數據庫
8.高併發解決方案(pv/uv/qbs)數組
9.redis memcache瀏覽器
php 引用變量,什麼狀況使用? 常量及數據類型 運算符及流程控制 自定義函數與內部函數 文件及其目錄 正則 會話控制 面向對象 網絡協議 開發環境及相關
git 或 svn 解決版本衝突
int 最大值
字符串 存儲類型 字符 utf8 = 3個字符
TP 框架區別
mysql 函數 char_length、FIND_IN_SET(str,數組)
redis 數據類型 各個使用場景‘
支付接口 的同步 異步
進程、線程 都有哪些狀態?分別是什麼?文件夾中的一個二進制文件是進程嗎?
如何統計一個小時的nginx日誌中,各個接口的訪問次數。
HTTP是tcp仍是UDP?HTTP有無狀態?如何優化?
explain 命令輸出主要都看哪些指標?
索引的優缺點?
PHP中final關鍵詞用於作什麼?finally區別?
fpm是多進程仍是多線程?
fpm是如何接受請求並進行處理的?
一個fpm進程可以處理幾個請求?
什麼是request生命週期?
什麼是進程生命週期?
<?php
php變量的工做原理。理解COW(copy on write 寫時複製機制)
class Person
{
public $name = "zhangsan";
}
$p1 = new Person;
xdebug_debug_zval('p1');//1
xdebug_debug_zval('p2');//0
$p2 = $p1;
xdebug_debug_zval('p1');//2
xdebug_debug_zval('p2');//2 refcount is_ref=0
$p2->name = "lisi";
xdebug_debug_zval('p1');//2
xdebug_debug_zval('p2');//2
exit;
$a = range(0, 3);
xdebug_debug_zval('a');//1
xdebug_debug_zval('b');//0
$b = $a;
xdebug_debug_zval('a');//2
xdebug_debug_zval('b');//2
$a = range(0, 2);
xdebug_debug_zval('a');//1
xdebug_debug_zval('b');//1
exit;
$a = range(1,10);
//print_r($a);
echo memory_get_usage(); //內存使用狀況。
xdebug_debug_zval('a');//zval 容器
$b = $a;
echo memory_get_usage(); //內存使用狀況。
xdebug_debug_zval('a');
$a = range(0,10);
echo memory_get_usage(); //內存使用狀況。
xdebug_debug_zval('a');
echo '<hr/>';
$a = range(0,10);
//print_r($a);
echo memory_get_usage(); //內存使用狀況。
xdebug_debug_zval('a');//zval 容器
$b = &$a;
echo memory_get_usage(); //內存使用狀況。
xdebug_debug_zval('a');
$a = range(0,10);
echo memory_get_usage(); //內存使用狀況。
xdebug_debug_zval('a');
echo '22222222<hr/>';
//unset 只會取消引用,不會銷燬空間。
$a = 1;
$b = &$a;
unset($b);
echo $a;
echo '333333333333<hr/>';
//對象自己就是引用傳值。
class person
{
public $name = 'lili';
}
$p1 = new person;
xdebug_debug_zval('p1');
$p2 = $p1;
xdebug_debug_zval('p1');
$p2->name = 'list';
xdebug_debug_zval('p1');
//$p2 修改後 不會從新複製一份$p1,而是$p1和$p2 同時被更改.
echo '4444444444<hr/>';
$data = ['a','b','c'];
foreach($data as $k=>$v)
{
$v = &$data[$k];
}
程序運行時,每一次循環結束後變量$data的值是什麼?
程序執行完成後,變量$data的值是什麼?
?>
php中哪三種定義方法以及區別:單引號、雙引號、heredoc newdoc 單引號不解析變量;不能解析轉義字符,只能解析單引號和反斜線自己。 變量和變量、字符串與字符串、字符串與變量之間能夠用.連接。
雙引號解析變量,變量可使用特殊字符和{}包含。 雙引號能夠解析全部轉義字符。 也能夠用.鏈接。
echo $str1 = 'shie$a<br/>';
echo $str2 = "hgshs&g'{$str1}% dd";
7中false狀況 : 0 ,0.0,false,array(),NULL,'0',' '
$a = 0.1;
$b = 0.2;
if($a+$b == 0.3) //false 計算機中cpu 是二進制 計算 有偏差。
const 效率高 是語言結構 定義類的常量
define 函數 7以前不能定義成數組 不能定義類的常量
一經定義不能修改 不能刪除。
遞歸 查找文件
for 循環只能遍歷索引數組
foreach 能夠遍歷索引數組和關聯數組 foreach會對數組reset操做; 將數組的指針 直到開始
聯合使用list()、each()和while 循環 一樣能夠遍歷索引數組和關聯數組 (組合 不會reset()操做 重置)
?>
if ... elseif 在elseif 語句中只能有一個表達式爲true ,即在elseif語句中 只能有一個語句塊被執行,多個elseif 從句是排斥關係。
使用elseif語句有一個基本原則,總把優先範圍小的條件放在前面處理。
swich....case:switch後面的控制表達式的類型只能是整型、浮點型、或者字符串;
switch 會生成跳轉表、直接跳轉到case; 有一個索引表 不會一層層判斷 會直接跳到case 對應的語句。
若是條件比一個簡單的比較要複雜得多或者在一個不少次的循環中,那麼用switch語句可能會快一些。
if elseif 優化 範圍小的在判斷前面 假如值是整型 、浮點型和字符串 能夠用switch 替換。
<?php $people = array("Bill", "Steve", "Mark", "David"); reset($people); while (list($key, $val) = each($people)) { echo "$key => $val<br>"; }
$count = 5;
function get_count()
{
static $count;
return $count++;
}
echo $count;
++$count;
echo $count.'<hr/>';//6
var_dump(get_count());//null
echo '<hr/>';
echo get_count();//1
變量的做用域 和 靜態變量;靜態變量只能在局部函數域中存在。不會釋放內存 會一直存在。
函數的參數以及參數的引用傳遞;
函數的返回值以及引用返回;
外部文件的導入;
系統內置函數;時間日期函數、ip處理函數,打印處理函數,序列化 反序列化函數、字符串處理函數,數組處理函數,
函數的返回值
include引入文件的時候,若是碰到錯誤,會給出提示,並繼續運行下邊的代碼。在執行文件時,每次都會讀取數據,用到時加載
require引入文件的時候,若是碰到錯誤,會給出提示,並中止運行下邊的代碼。在執行文件時,只讀取一次,相對效率高。一開始就加載。
禁用cookie 後 session 的傳遞
<a href ="1.php?<?php echo session_name().'='.session_id(); ?>">ee</a> <a href ="1.php?<?php echo SID;?>">ee</a>//SID cookie 開啓時 值爲空,cookie禁用時,值爲session_id
seesion_set_save_handle() 存儲在redis memcache mysql 等。
共享session 信息
http 協議 工做原理
http狀態碼
200 成功
301 永久性重定向
302 臨時性重定向
303
304
307
400 請求報文中有語法錯誤
401 發送請求須要進行http認證信息
403 對請求資源被服務器禁止訪問
404 找不到請求資源
500 服務器內部錯誤
503 服務器暫時處於超負載 或在進行停機維護 沒法處理請求
osi 七層模型原理 物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層物理層:創建、維護、斷開物理鏈接數據鏈路層:創建邏輯鏈接、進行硬件地址尋址、差錯校驗等功能網絡層:進行邏輯地址尋址,實現不一樣網絡之間的路徑選擇傳輸層:定義傳輸數據的協議端口號,以及流控和差錯校驗。TCP UDP 數據包一旦離開網卡即進入網絡傳輸層。會話層:創建、管理、終止會話表示層:數據的表示 安全 壓縮應用層:網絡服務與最終用戶的一個接口。協議有 HTTP、FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCPHTTP協議的工做特色和工做原理特色:基於B/S模式;通訊開銷小、簡單快捷、傳輸成本低;使用靈活、可以使用超文本傳輸協議;節省傳輸時間;無狀態;原理:客戶端發送請求給服務器,建立一個TCP鏈接,指定端口號,默認80,鏈接到服務器,服務器監聽瀏覽器請求,一旦監聽到客戶端請求,分析請求類型後,服務器會向客戶端返回狀態信息和數據內容。HTTP協議常見請求/響應頭content-type、accept、origin、cookie、cache-control、user-agent、Referer、X-Forwarded-For、access-control-allow-origin、last-modifiedHTTP協議的請求方法:get、post、head、options、put、delete、traceHTTPS是一種基於SSL/TLS的HTTP協議,全部的HTTP數據都是在SSL/TLS協議封裝之上傳輸的。HTTPS協議在HTTP協議的基礎上,添加了SSL/TLS握手以及數據加密傳輸,也屬於應用層協議。FTP 文件傳輸協議 21telnet 遠程登陸 23smtp 簡單郵件服務器 25 pop3 接收郵件 110HTTP 超文本傳輸協議 80 DNS 域名解析 53