成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

PHP性能殺手--Deprecated錯(cuò)誤

0xE7A38A / 980人閱讀

摘要:發(fā)現(xiàn)問(wèn)題最近剛剛完成了一個(gè)項(xiàng)目,基本功能都正常后,就發(fā)布到線上。分析問(wèn)題錯(cuò)誤的原因是不推薦使用函數(shù)處理正則表達(dá)式。用替換掉后不僅錯(cuò)誤沒(méi)了,而且性能也大大提高了。錯(cuò)誤存在潛在的兼容性問(wèn)題,要引起大家的重視。

發(fā)現(xiàn)Deprecated問(wèn)題

最近剛剛完成了一個(gè)項(xiàng)目,基本功能都正常后,就發(fā)布到線上。結(jié)果上線一會(huì)兒就發(fā)現(xiàn)產(chǎn)生了大量的錯(cuò)誤,如下圖

一看都是PHP的Deprecated錯(cuò)誤,是級(jí)別最低的那種。
PHP官方手冊(cè)對(duì)錯(cuò)誤級(jí)別的解釋如下:

參看:PHP官方說(shuō)明

查找Deprecated問(wèn)題

查看了第一條的詳細(xì)信息,


由上圖可以看出,錯(cuò)誤原因是在common.ini.php中使用了eregi函數(shù),引發(fā)了Deprecated錯(cuò)誤。
問(wèn)題代碼在common.ini.php的52行。
查看代碼:

phperegi(".([^.]*$)", $fileName, $ extension);

產(chǎn)生的錯(cuò)誤,這是一個(gè)獲取文件后綴名的正則表達(dá)式。

分析Deprecated問(wèn)題

錯(cuò)誤的原因是PHP不推薦使用eregi函數(shù)處理正則表達(dá)式。
引用PHP官方5.3兼容文檔,其表述如下:

參看:PHP官方說(shuō)明

PHP官方指出,PHP5.3不推薦使用eregi函數(shù),建議使用preg_match函數(shù)代替。

解決Deprecated問(wèn)題

接下來(lái)把eregi換成perg_match,然后對(duì)正則表達(dá)式進(jìn)行修改。
采用perg_match的代碼如下:

phppreg_match("/.([^.]*$)/", $fileName, $ extension);

這樣Deprecated錯(cuò)誤就沒(méi)有了。

研究Deprecated問(wèn)題

一般情況下,Deprecated 錯(cuò)誤即使不修復(fù)也不影響運(yùn)行的,但是對(duì)性能是否會(huì)有影響呢?
先做一個(gè)錯(cuò)誤輸出的對(duì)比試驗(yàn),關(guān)閉display_error輸出。
代碼如下:

php

結(jié)果是:
[有Deprecated]processing time: 0.51678085327148
[無(wú)Deprecated]processing time: 0.31887912750244

證明,開(kāi)啟Deprecated 的error_reporting后,性能比關(guān)閉下降了一倍。具體原因與下面的Notice一樣。
我們?cè)僮鰝€(gè)試驗(yàn),分別寫(xiě)了兩個(gè)PHP程序,一個(gè)是存在Deprecated錯(cuò)誤的代碼,另一個(gè)是修復(fù)了Deprecated的代碼,代碼如下:

跑起來(lái)看看結(jié)果:
trigger deprecated: 0.33528900146484
trigger no deprecated: 0.019602060317993

兩的性能相差17.63倍。用preg_match 替換掉ereg后不僅Deprecated錯(cuò)誤沒(méi)了,而且性能也大大提高了。
性能提高的原因是Perl比POSIX處理正則表達(dá)式速度更快。

Deprecated錯(cuò)誤存在潛在的兼容性問(wèn)題,要引起大家的重視。
所有提示Deprecated的函數(shù)都是官方不推薦使用,今后新版的PHP有可能對(duì)其不兼容。
最典型的案例是PHP5.5.0以后已經(jīng)不再兼容mysql_query和mysql_connect。
要保證升級(jí)PHP版本后,程序正常運(yùn)行,需要使用mysqli和PDO來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/20959.html

相關(guān)文章

  • PHP 錯(cuò)誤與異常

    摘要:但異常捕獲后程序可以繼續(xù)執(zhí)行,而真正的錯(cuò)誤出現(xiàn)后程序就必須終止異??梢允褂脕?lái)捕獲捕獲,捕獲之后后續(xù)代碼可以繼續(xù)執(zhí)行而錯(cuò)誤是無(wú)法使用捕獲的如果拋出了異常,就必須捕獲它否則程序終止執(zhí)行。 PHP錯(cuò)誤級(jí)別 Parse error > Fatal Error > Waning > Notice > Deprecated Deprecated 最低級(jí)別的錯(cuò)誤(不推薦,不建議)使用一些過(guò)期函數(shù)的...

    longmon 評(píng)論0 收藏0
  • 讓我偷偷的告訴你:運(yùn)維加薪的殺手锏是啥?

    摘要:但是怎么提加薪比較好呢現(xiàn)在讓小編簡(jiǎn)單介紹下加薪的個(gè)殺手锏第一有備而戰(zhàn),一切讓業(yè)績(jī)說(shuō)話不要和老板大談你正在貸款,買車買房。。。你必須向公司證明你值得加薪,用數(shù)據(jù)來(lái)證明你的業(yè)績(jī)顯然是再明智不過(guò)的。 臨近年底,辛辛苦苦一年該如何跟老板開(kāi)口談加薪成了運(yùn)維人的心病。但是怎么提加薪比較好呢?現(xiàn)在讓小編簡(jiǎn)單介紹下加薪的 3 個(gè)殺手锏: 第一、有備而戰(zhàn),一切讓業(yè)績(jī)說(shuō)話 不要和老板大談你正在貸款...

    monw3c 評(píng)論0 收藏0
  • PHP 7 修改了什么呢 -- 2

    摘要:風(fēng)格的構(gòu)造函數(shù)式構(gòu)造函數(shù),它與類的名稱相同,因?yàn)樗鼈兪窃谒x類的方法,現(xiàn)在已過(guò)時(shí),并且將在未來(lái)被移除。如果的構(gòu)造僅僅是一個(gè)類中定義構(gòu)造函數(shù),將發(fā)出。類實(shí)現(xiàn)構(gòu)造函數(shù)方法不受影響。 PHP7 - use語(yǔ)句 從PHP7起,單次使用 use 語(yǔ)句可以用來(lái)從同一個(gè)命名空間導(dǎo)入類,函數(shù)和常量(而不用多次使用 use 語(yǔ)句)。示例 PHP7 - 錯(cuò)誤處理 從PHP7,錯(cuò)誤處理和報(bào)告已經(jīng)改變。P...

    leeon 評(píng)論0 收藏0
  • php error_reporting()關(guān)閉報(bào)錯(cuò)

    摘要:至,有同樣的行為。表示關(guān)閉所有錯(cuò)誤報(bào)告表示顯示二函數(shù)說(shuō)明設(shè)置應(yīng)該報(bào)告何種錯(cuò)誤說(shuō)明函數(shù)能夠在運(yùn)行時(shí)設(shè)置指令。后果是導(dǎo)致腳本終止不再繼續(xù)運(yùn)行。初始化啟動(dòng)過(guò)程中發(fā)生的警告非致命錯(cuò)誤。用戶產(chǎn)少的警告信息。出外的所有錯(cuò)誤和警告信息。 錯(cuò)誤報(bào)告級(jí)別:指定了在什么情況下,腳本代碼中的錯(cuò)誤(這里的錯(cuò)誤是廣義的錯(cuò)誤,包括E_NOTICE注意、E_WARNING警告、E_ERROR致命錯(cuò)誤等)會(huì)以錯(cuò)誤報(bào)告...

    noONE 評(píng)論0 收藏0
  • PHP7新特性小結(jié)

    摘要:標(biāo)量類型聲明在中,引入了一個(gè)新的特性,即標(biāo)量類型聲明。棄用樣式構(gòu)造函數(shù)是與它們定義的類具有相同名稱的方法,現(xiàn)在已被棄用,并且將來(lái)將被刪除。 showImg(https://segmentfault.com/img/remote/1460000012438557?w=1024&h=456); 說(shuō)明 PHP 7使用新的Zend Engine 3.0將應(yīng)用程序性能提高近兩倍,內(nèi)存消耗比PHP...

    Steven 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<