优化以下PHP代码的最佳方法?

优化以下PHP代码的最佳方法?,php,regex,optimization,str-replace,Php,Regex,Optimization,Str Replace,我对php有点陌生。您能否告诉我优化此php代码以获得最佳性能的最佳方法: $data = mysql_query("SELECT * FROM wcddl_recents ORDER BY id DESC LIMIT 15"); $searchai = mysql_fetch_array( $data ); while($searchai = mysql_fetch_array($data)) { $searchai[query] = strip_tags($searchai[query])

我对php有点陌生。您能否告诉我优化此php代码以获得最佳性能的最佳方法:

 $data = mysql_query("SELECT * FROM wcddl_recents ORDER BY id DESC LIMIT 15");
$searchai = mysql_fetch_array( $data );
while($searchai = mysql_fetch_array($data)) {
$searchai[query] = strip_tags($searchai[query]);
    $searchai_clean = str_replace(array("/","\\","'",'"',"<",">","-","+","%","@","%20","(",")",":","[","]","{","}","?","!")," ",$searchai[query]);
    $searchai_cleandvigubai = str_replace(" ","-",$searchai_clean);
    $searchai_cleandvigubaix = str_replace(array("---","--"),"-",$searchai_cleandvigubai);
    $searchai_cleandvigubai2 = strtolower($searchai_cleandvigubaix);

这个怎么样?变量更少,您可以在第一条语句中与strip_标记一起使用strtolower

您将用空格替换几个字符,然后用破折号替换空格。不妨将两者结合起来。同时从清洁的更换件上拆下仪表板。它将被替换为空格,然后再次替换为破折号,除非它是Microsoft双破折号,此时您可以在下面的示例中再次添加它

$searchai[query] = strtolower(strip_tags($searchai[query]));
$searchai_clean  = str_replace(array("/","\\","'",'"',"<",">","+","%","@","%20","(",")",":","[","]","{","}","?","!"),"-",$searchai[query]);
$searchai_cleandvigubaix = str_replace(array("---","--"),"-",$searchai_clean);

请务必注意优化俱乐部的规则:

优化俱乐部的第一条规则是,你不优化。 优化俱乐部的第二条规则是,不进行测量就不进行优化。 如果您的应用程序运行速度比基础传输协议快,则优化结束。 一次一个因素。 没有marketroid,没有marketroid时间表。 只要有必要,测试就会继续进行。 如果这是您在优化俱乐部的第一晚,您必须编写一个测试用例。 你需要注意的两大问题是2和3

首先,您正在优化而不进行测量。您还不知道代码块的哪些部分占用的时间最多。要做到这一点,您需要一个工具来告诉您,比如xdebug。如果做不到这一点,请在每条语句之后调用PHP的microtime函数,以计算每条语句执行所需的时间

似乎提供的大多数答案都为您提供了加速字符串函数的方法,但我敢打赌,调用SQL函数和返回行所花费的时间会使这些字符串函数的执行时间相形见绌。例如,如果整个代码以1000毫秒的速度运行,SQL调用需要970毫秒,字符串函数需要30毫秒,那么即使将字符串函数的速度减半,也只节省了15毫秒

假设SQL调用是瓶颈,看看能做些什么来加速它们。SQL查询是否使用了它应该使用的索引?ID列是否已编制索引

您是否使用了正确的PHP函数?是否有一个mysql_*函数可以在一个批处理中返回结果中的所有行,而不是命中数据库15次?就这一点而言,mysqli_uuu或pdo_uuuuuu函数集的速度更快吗?mysql_uu函数已被正式弃用。请参阅并阅读有关备选方案的信息

最后,你需要它跑多快?如果现在运行需要10秒,您希望它运行多快?9秒够快吗?或者你需要它在1中运行吗?你甚至可能无法得到你想要的加速


tl;dr:在你尝试加速代码之前,找出慢的部分是什么。

不要优化它;配置它

使用探查器工具(如)找出代码中运行时间最长的部分。一旦您知道代码的哪些部分花费的时间最多,您就可以专注于这些领域

加快这些特定领域代码的速度所做的少量工作将比数月来在边缘进行修补产生更大的效果

事实上,除非你在一个流量巨大的网站上工作,并且需要节省每一个可能的带宽字节,否则所有那些人们称之为优化的边缘修补都可能几乎没有明显的效果


简而言之:找出什么是慢的;解决这个问题。其余的就不用麻烦了。

Profile。例如,使用xdebug+cachegrind来确定花费的时间。Protip:尝试找到一个问题的几种解决方案,并编写一个测试脚本,看看哪一种性能最好。你自己做的测试将来可能更容易记住。OP,你确定你在寻找优化吗?也许您只是想让代码不那么难看,这不一定与性能相关?