資料介紹
軟件簡介
Php-affinity 通過設置cpu親和性,可以將進程綁定到一個cpu核心上。一般在如下場景我們可能會希望修改進程的cpu親和性:
-
?頻繁的并行運算
-
?線程可伸縮性測試(通過增加cpu核心數量模擬線性擴展)
-
?運行時間敏感的,決定性的進程
向nginx,swoole等開源軟件,都提供了設置cpu親和性的方法。nginx官方建議worker數量等同于cpu核心數量也是為了將一個進程綁定到一個cpu核心上,同時避免進程切換帶來的開銷。
Php本身并沒有提供設置cpu親和性的函數,我們可以通過兩種方式實現:
-
?調用系統命令,修改當前進程cpu親和性
-
?編寫php擴展,封裝系統調用。
php-affinity是使用c編寫的php擴展,項目地址:https://github.com/huyanping/php-affinity
????/** ?????????????????????*?set?CPU?affinity ?????????????????????* ?????????????????????*?@param?$cpu_id ?????????????????????*?@return?bool ?????????????????????*/ ????????????????????functionsetaffinity($cpu_id){ ????????????????????????$num=?getcpucores(); ????????????????????????if($cpu_id>=?$num){ ????????????????????????????returnfalse; ????????????????????????} ????????????????????????$set=?system_call($cpu_id); ????????????????????????if($set===?-1){ ????????????????????????????returnfalse; ????????????????????????} ????????????????????? ????????????????????????returntrue; ????????????????????} ????????????????????? ????????????????????/** ?????????????????????*?get?CPU?affinity ?????????????????????* ?????????????????????*?@return?bool ?????????????????????*/ ????????????????????functiongetaffinity(){ ????????????????????????$cpu_id=?system_call(); ????????????????????????if($cpu_id===?-1){ ????????????????????????????returnfalse; ????????????????????????} ????????????????????????return$cpu_id; ????????????????????} ????????????????????? ????????????????????? ????????????????????/** ?????????????????????*?get?number?of?CPU ?????????????????????* ?????????????????????*?@return?bool ?????????????????????*/ ????????????????????functiongetcpucores(){ ????????????????????????$nums=?system_call(); ????????????????????????if($nums===?-1){ ????????????????????????????returnfalse; ????????????????????????} ????????????????????????return$nums; ????????????????????}
提供了如下三個函數:
-
setaffinity – 設置cpu親和性
-
getaffinity – 獲取cpu親和性
-
getcpucores – 獲取cpu核心數量
API 如下:
參考文獻:
- PHP-XLSWriter PHP Excel C擴展
- PHP Taint檢測XSS漏洞的擴展
- PHP教程:foreach使用引用注意的問題
- PHP學習教程分享 7次下載
- 如何使用PHP-X快速開發一個PHP擴展 8次下載
- 學習PHP需要注意那幾點 8次下載
- PHP教程之PHP與MySQL數據庫連接的資料說明 8次下載
- smarty如何調用PHP常量 3次下載
- 如何使用PHP-X快速開發一個PHP擴展 9次下載
- PHP基礎知識的詳細資料總結 7次下載
- PHP多個版本的比較資料說明 0次下載
- PHP從入門到精通(免費) 9次下載
- php程序實例下載
- PHP/MySQL教程 0次下載
- PHP完全自學手冊
- phpy:PHP與Python互調用庫 1042次閱讀
- PHP中的生成器 879次閱讀
- php版冒泡排序是如何實現的? 960次閱讀
- 如何在Ubuntu 20.04安裝PHP 8.1并將其與Nginx集成 3511次閱讀
- php是什么語言編寫的 5024次閱讀
- 一文知道PHP的優點和缺點 7023次閱讀
- 為什么PHP的開發效率比java高但是java比PHP流行 1w次閱讀
- PHP與Python對比 如何選擇? 4548次閱讀
- php開發中遇到的難點有哪些_十大php開發常見問題盤點 1.8w次閱讀
- php開發環境的搭建和使用 3474次閱讀
- PHP 集成開發環境比較 1939次閱讀
- 實現php毫秒定時器方法詳解 2586次閱讀
- php實現定時器任務方法詳解 1435次閱讀
- PHP定時器實現每隔幾秒運行一次方法詳解 1.6w次閱讀
- PHP實現定時任務的幾種方法詳解 7162次閱讀
下載排行
本周
- 1晶體三極管的電流放大作用詳細說明
- 0.77 MB | 30次下載 | 2 積分
- 2雙極型三極管放大電路的三種基本組態的學習課件免費下載
- 4.03 MB | 23次下載 | 1 積分
- 3多級放大電路的學習課件免費下載
- 1.81 MB | 20次下載 | 2 積分
- 4PC4401_DC-DC 42V反激式隔離開關電路
- 0.85 MB | 4次下載 | 免費
- 5九陽豆漿機高清原理圖
- 2.47 MB | 2次下載 | 1 積分
- 6HR1124S/9110S單通道低壓H橋電機驅動芯片中文手冊
- 1.30 MB | 1次下載 | 免費
- 7基于51/32單片機按鍵控制步進電機正反轉,A4988驅動
- 2.05 MB | 1次下載 | 1 積分
- 8STM32F10xxx單片機編程手冊
- 0.29 MB | 1次下載 | 免費
本月
- 1晶體三極管的電流放大作用詳細說明
- 0.77 MB | 30次下載 | 2 積分
- 2雙極型三極管放大電路的三種基本組態的學習課件免費下載
- 4.03 MB | 23次下載 | 1 積分
- 3第十一屆 藍橋杯 單片機設計與開發項目 省賽 程序設計試題及源碼
- 90.88KB | 23次下載 | 3 積分
- 4Python從入門到精通背記手冊
- 18.77 MB | 22次下載 | 1 積分
- 5多級放大電路的學習課件免費下載
- 1.81 MB | 20次下載 | 2 積分
- 6STM32F103C8T6開發板最小系統原理圖
- 0.78 MB | 17次下載 | 免費
- 7SX1308應用電路圖與SX1308升壓電路圖
- 0.18 MB | 8次下載 | 1 積分
- 8東芝彩色電視機29SF6C維修說明書
- 4.86 MB | 8次下載 | 1 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191382次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183337次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81585次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73814次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論