這篇文章主要介紹“PHP程序員解決的問題有哪些”,在日常操作中,相信很多人在PHP程序員解決的問題有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP程序員解決的問題有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
站在用戶的角度思考問題,與客戶深入溝通,找到新巴爾虎左網(wǎng)站設(shè)計與新巴爾虎左網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋新巴爾虎左地區(qū)。Lv0 查看PHP錯誤信息
程序沒有達到預(yù)期效果,證明代碼出錯了,看PHP的錯誤信息是第一步。如果直接忽略錯誤信息,表明這個人不適合擔任專業(yè)的程序員崗位。有些情況下 php.ini配置中關(guān)閉了錯誤顯示,需要修改php.ini打開錯誤信息,或者錯誤信息被導(dǎo)出到了日志文件,這種情況可以直接tailf php_error.log來看錯誤信息。
拿到錯誤信息后直接定位到程序代碼問題,或者到Google/百度搜索,即可解決問題。
注:打開錯誤顯示的方法是
php.ini中display_errors / display_startup_errors 設(shè)置為On
php.ini中error_reporting 設(shè)置為E_ALL
PHP代碼中設(shè)置error_reporting(E_ALL)
Lv1 存在多個版本的php或php-cli與php-fpm加載不同的配置
存在多個版本的php,懂得通過which php來看是哪個PHP,或者加絕對路徑制定php版本。表示此PHPer通過了此層級的50%考驗。
另外一個情況就是php-cli與php-fpm得到的執(zhí)行情況不一樣,如在web瀏覽器中執(zhí)行是對的,cli下執(zhí)行是錯的。這時候可能是2個環(huán)境 加載的php.ini不同所致。cli下通過php -i |grep php.ini得到加載了哪個php.ini。而fpm下通過phpinfo()函數(shù)可以得到php.ini的絕對路徑。
Lv2 var_dump/die打印變量值信息單步調(diào)試
這是慣用的程序調(diào)試手段,也是最簡單粗暴有效的解決問題方法。高級一點的手段是使用PHP的Trace類/日志類,花哨一點的可以借助phpstorm+xdebug在IDE工具里進行Debug。
Trace工具還可以分析腳本的耗時,進行PHP代碼的性能優(yōu)化。
這3個考驗全部通過,表明此程序員已經(jīng)具備了專業(yè)PHP程序員應(yīng)該有的解決問題能力了。PHP程序員只要過了這個等級,就足以應(yīng)多大部分情況,在中小型網(wǎng)站中毫無壓力。
Lv3 使用strace工具跟蹤程序執(zhí)行
strace可以用來查看系統(tǒng)調(diào)用的執(zhí)行,使用strace php test.php,或者strace -p 進程ID。strace就可以幫助你透過現(xiàn)象看本質(zhì),掌握程序執(zhí)行的過程。這個手段是在大型網(wǎng)站,大公司里最常用的。如果沒掌握strace,這里只能說 抱歉了,我們不接受不會strace的PHPer。
strace其實也是對程序員基礎(chǔ)的考驗,如果不懂操作操作系統(tǒng),完全不懂底層,肯定也達不到會用strace的程度。當然strace對于 PHP源碼 里的死循環(huán)是解決不了的。比如你發(fā)現(xiàn)一個php-fpm進程CPU100%了,strace恐怕是解決不了的。因為strace是看系統(tǒng)調(diào)用,一般都 是IO類操作,既然是IO密集,那CPU一定不可能是100%。
Lv4 使用tcpdump工具分析網(wǎng)絡(luò)通信過程
tcpdump可以抓到網(wǎng)卡的數(shù)據(jù)通信過程,甚至數(shù)據(jù)內(nèi)容也可以抓到。使用tcpdump可以看到網(wǎng)絡(luò)通信過程是什么樣的,如何時發(fā)起了TCP SYN3次握手,何時發(fā)送FIN包,何時發(fā)送RST包。這是一個基本功,如果不懂tcpdump,證明不具備網(wǎng)絡(luò)問題解決能力。
Lv5 統(tǒng)計函數(shù)調(diào)用的耗時和成功率
使用xhporf/xdebug導(dǎo)出PHP請求的調(diào)用過程,然后分析每個函數(shù)調(diào)用的過程和耗時。能夠分析PHP程序的性能瓶頸,找出可以優(yōu)化的點。
另外一個對于網(wǎng)絡(luò)服務(wù)的調(diào)用,如mysql查詢,curl,其他API調(diào)用等,通過記錄起始和結(jié)束時microtime,返回的是不是false, 可以得到調(diào)用是否成功,耗時多少。如果可以匯總數(shù)據(jù),整理出調(diào)用的成功率,失敗率,平均延時,證明此程序員對接口質(zhì)量敏感,有大型網(wǎng)站項目經(jīng)驗。
Lv6 gdb使用
gdb是C/C++調(diào)試程序的利器,需要具備一定C/C++功底的程序員才會能熟練使用gdb。上面說的strace無法跟蹤php程序CPU100%,而gdb是可以跟蹤的。另外gdb也可以解決php程序core dump的問題。
通過gdb -p 進程ID,再配合php-src的.gdbinit zbacktrace等工具,可以很方便地跟蹤PHP程序的執(zhí)行。像上面的CPU100%往往是PHP程序中發(fā)生死循環(huán)了,gdb進行多次查看,就大致可 以得到死循環(huán)的位置。具備gdb解決問題能力的PHP程序員少之又少。如果能使用gdb解決PHP問題,這個PHPer百分之百可以通過面試,并且可以拿 到較高的技術(shù)評級。
Lv7 查看PHP內(nèi)核和擴展源碼
如果能熟悉PHP內(nèi)核和擴展的源碼,遇到PHP程序中最復(fù)雜的內(nèi)存錯誤,也可以有解決的能力。這類PHP程序員就是鳳毛麟角了。配合gdb工具和對PHP源碼的熟悉,可以查看opcode的信息,execute_data的內(nèi)存,全局變量的狀態(tài)等。
到此,關(guān)于“PHP程序員解決的問題有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文標題:PHP程序員解決的問題有哪些-創(chuàng)新互聯(lián)
鏈接URL:http://jinyejixie.com/article4/gphie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、靜態(tài)網(wǎng)站、微信公眾號、外貿(mào)網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)