程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP面試題之優化,php面試題

PHP面試題之優化,php面試題

編輯:關於PHP編程

PHP面試題之優化,php面試題


 * PHP性能問題
 * 1.PHP語法使用的不恰當
 * 2.使用PHP語言做了它不擅長的事
 * 3.使用PHP語言鏈接的服務不給力
 * 4.PHP自身做不了的事情
 * 
 * PHP的性能問題的解決方向
 * 1.PHP語言級的性能優化(代碼優化)
 * 2.PHP周邊問題的性能優化(linux,mysql,磁盤等)
 * 3.PHP語言性能的優化(c層)
 * 
 * 使用ab壓力測試(-n請求數  -c並發數 url目標壓測地址)
 * ./ab -n1000 -c100 http://www.baidu.com
 * Request per second每秒接受的請求數(越大越好)
 * Time per request一個請求需要的時間(越小越好)
 * 
 * time php test.php 測試代碼執行時間
 *
 * vld- PHP Opcode查看擴展
 * php -dvld.active=1 -dvld.execute=0  test.php
 * 
 * PHP代碼運行流程 
 * *.php(PHP文件)->Scanner(掃描代碼,分析)->Exprs(保存成zend引擎可以識別的文件)->Parser(解析)->Opcodes(能被執行的文件)->Exec(執行)->Output(輸出結果)
 * 多使用PHP內置變量,常量,函數
 * php內置函數也存在差異,多使用時間復雜度低的.例isset()和array_key_exists()存在差異
 * 盡可能規避使用PHP魔法函數
 * 禁用@錯誤抑制符,會產生額外的開銷
 * 合理使用內存,利用unset()及時釋放不使用的內存
 * 盡量少使用正則表達式
 * 避免在循環內做運算for($i=0;strlen($str);$i++){}
 * 減少計算密集型業務(php語言特性決定了PHP不適合做大數據量運算)
 * 務必使用帶引號字符串做鍵值(key)
 * 減少文件類操作 內存<<數據庫<磁盤<讀寫網絡數據
 * 優化網絡:1.設置超時時間 連接超時200ms  讀超時800ms 寫超時500  2.將串行請求並行化:使用curl_multi_*() ,使用swoole擴展
 * 壓縮PHP接口輸出:Gzip  好處:client更快獲取數據 壞處:額外的cpu開銷
 * PHP緩存復用
 * 時間窗口重疊方法
 * PHP旁路方案
 * xhprof (php -ri xhprof)

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved