Discover deprecated problems
Recently completed a project, the basic functions are normal, published to the online. As a result, a large number of errors have been found in the online
A look at PHP's deprecated error, is the lowest level of the kind.
The official PHP manual explains the error levels as follows:
See: Official PHP Instructions
Finding deprecated problems
View the details of the first article,
As can be seen, the error is due to the use of the Eregi function in common.ini.php, which raises the deprecated error.
The problem code is in line 52 of common.ini.php.
View Code:
Phperegi ('. ( [^.] *$) ', $fileName, $ extension);
The resulting error, which is a regular expression that gets the file suffix name.
Analyze deprecated problems
The reason for the error is that PHP does not recommend using the EREGI function to handle regular expressions.
Refer to the official PHP 5.3 compatible documentation, which is described below:
See: Official PHP Instructions
PHP officials point out that PHP5.3 does not recommend using the Eregi function, and it is recommended to use the Preg_match function instead.
Solve deprecated problems
Next, change the eregi to Perg_match, and then modify the regular expression.
The code using Perg_match is as follows:
Phppreg_match ('/. ( [^.] *$)/', $fileName, $ extension);
So the deprecated error is gone.
Study the problem of deprecated
In general, the Deprecated error does not affect the operation even if it is not repaired, but does it affect performance?
Make a comparison test of the error output and turn off the display_error output.
The code is as follows:
Php
The result is:
[With Deprecated]processing time:0.51678085327148
[No deprecated]processing time:0.31887912750244
proved that the performance was reduced by one-fold after the error_reporting of the deprecated was turned on. The exact reason is the same as the following notice.
We do another experiment, wrote two PHP programs, one is the existence of deprecated error code, the other is to fix the deprecated code, the code is as follows:
Run up and look at the results:
Trigger deprecated:0.33528900146484
Trigger No deprecated:0.019602060317993
The performance difference between the two is 17.63 times times. After replacing Ereg with Preg_match, not only the deprecated error is gone, but also the performance is greatly improved.
The performance increase is due to the fact that Perl handles regular expressions faster than POSIX.
There are potential compatibility problems for deprecated errors, which should be paid attention to by everyone.
All functions that prompt deprecated are officially deprecated and may not be compatible with new versions of PHP in the future.
The most typical case is that PHP5.5.0 is no longer compatible with mysql_query and mysql_connect.
To ensure that the PHP version is upgraded, the program runs correctly and requires the use of mysqli and PDO to access the database.