[TOC]
## 線程與進程的區別
* 多個線程是在同一個進程內的,線程之間可以共享內存變量而實現線程間的通信。
* 線程比進程更加輕量級,進程要比線程更加消耗系統資源。
> 多線程存在的問題主要有
* 線程讀寫變量存在著同步問題需要加鎖
* 鎖粒度過大會存在性能問題,會導致只有一個線程在運行,其它線程都在等待鎖,也就無法實現并行。
* 同時使用多個鎖時邏輯復雜,一旦某個鎖沒有被正確釋放可能會發生線程死鎖。
* 某個線程發生致命錯誤會導致整個進程崩潰
> 相對而言多進程更為穩定,可利用進程間通信`IPC`技術實現數據共享。多進程通信的方式主要包括
* 共享內存
共享內存和線程間讀寫變量時一樣的,都需要加鎖,同時也存在同步、死鎖等問題。
* 消息隊列
消息隊列采用多個子進程搶占隊列的模式,性能較好。
* 管道、UnixSock、TCP、UDP
可以使用`read/write`來傳遞數據,TCP/UDP使用socket來通信,子進程可以分布運行。
## PHP 多進程案例
~~~
public function actionTest()
{
$procNum = 150; // 150個進程
for($i = 0; $i < $procNum; $i++){
$PID = pcntl_fork(); //創建子進程
if ($PID == 0){
doFunc();
exit();
} elseif ($PID == -1) {
die('could not fork');
} else {
// 如果在這里寫 pcntl_wait($status),則只有當前進程執行完畢后才會創建下一個進程
}
}
echo 'done';
}
public function doFunc(){
echo 'haha';
}
~~~
## 創建多進程的返回值
~~~
public function actionTest3()
{
$nPID = pcntl_fork();//創建子進程
var_dump($nPID);
}
~~~
> 返回值

- 重點知識預覽
- 理解面向對象
- 魔術變量
- 魔法方法
- 面試題基礎篇
- PSR標準
- class (單繼承)
- trait (多繼承)
- 匿名函數
- 日期處理
- 文件處理
- 字符串處理
- BC Math
- 數組處理
- HTTP的各個狀態
- PHP環境變量
- session & cookie
- composer
- 變量的類型轉換和判斷類型方法
- PHP的錯誤和異常處理
- PHP的ob緩沖區
- PHP內存調試
- pcntl多進程
- PHP yield (生成器):節約內存
- Nginx負載均衡
- 同一臺服務器如何測試負載均衡
- 安全方面
- HTTPS實現
- PHP性能分析(xhprof)
- 高并發雪崩解決方法
- 接口加密設計(安全性)
- 數據庫(重要數據操作)日志記錄規范
- APP發版操作
- 緩存使用
- Memcache
- MYSQL緩存
- Redis
- 安裝與使用
- redis過期策略和內存淘汰機制
- Redis分布式鎖
- Redis雪崩、穿透、擊穿問題
- redis主從
- redis哨兵
- opcache
- 消息隊列
- Redis消息隊列
- Beanstalkd
- 數據庫匯總
- MYSQL哪些情況下會忽略索引
- MYSQL常用命令
- SQL高級運用
- MYSQL分布式集群使用
- 主從復制
- 同一臺服務器如何測試主從同步
- MYSQL索引類型
- MYSQL分區
- 鎖機制
- 事務隔離級別(臟讀、幻讀、不可重復讀)
- 分布式事務
- MYSQL性能優化
- swoole
- 安裝以及升級
- swoole進程初識
- TCP相關教程
- TCP數據傳輸DEMO(含同步、異步、長連接)
- Server異步投遞task任務
- TCP粘包問題
- websocket相關教程
- websocket初體驗DEMO
- websocket核心功能(心跳檢測、用戶校驗、重連機制)
- websocket用戶之間通信DEMO
- 定時器的使用
- 常駐內存以及如何避免內存泄漏
- max_request使用實例
- 守護進程、信號和平滑重啟
- 全文檢索工具
- MYSQL全文索引
- ElasticSearch全文檢索
- ES基礎知識
- Mapping及增刪改查
- DSL查詢語法
- 搜索建議 (completion)
- mysql轉dsl工具
- ES的安裝與PHP測試
- kibana可視化工具
- ELK日志管理系統
- PHP設計模式
- 創建型模式
- 工廠模式
- 單例模式
- 注冊器模式
- 工廠模式于策略模式的區別
- 結構型模式
- 適配器模式
- 橋接模式
- 裝飾器模式
- 行為型模式
- 觀察者模式
- 策略模式
- 高并發設計