Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP放缓,但在哪里_Php - Fatal编程技术网

PHP放缓,但在哪里

PHP放缓,但在哪里,php,Php,我有一个PHP页面,它将mysql查询中的大约130个结果加载并排序到HTML表中。PHPmyadmin只需0.003秒,但我的页面需要0.5秒。在某些地方,php代码很慢,但我在调试它时很差劲 为了提高性能,我做了一件事,就是发现 if($var == '123'){ //action } 而$var不存在。把它改成 if(isset($var)){ if($var =='123'){ //action } } 当$var不存在时,脚本变得更快 我的问题是:找出我剧本中的减

我有一个PHP页面,它将mysql查询中的大约130个结果加载并排序到HTML表中。PHPmyadmin只需0.003秒,但我的页面需要0.5秒。在某些地方,php代码很慢,但我在调试它时很差劲

为了提高性能,我做了一件事,就是发现

if($var == '123'){ //action }
而$var不存在。把它改成

if(isset($var)){
  if($var =='123'){
    //action
  }
}
当$var不存在时,脚本变得更快


我的问题是:找出我剧本中的减速的最好方法是什么?还有其他类似的东西吗?

如果出现以下情况,您可以使用
&&&
(and)而不是嵌套的:

if(!empty($var)&&($var=='123')){
    //action
}
如果要使用
==
检查多个值,而不是嵌套的
If
,则可以使用:


您如何返回结果<代码>回显在循环中执行指令可能会导致一些性能问题,这是一条非常昂贵的指令。如果这样做,请将实现更改为以下内容:

$resultOutput = '';

foreach($result as $var)
{
    // to seize AbsoluteZERO's idea
    switch ($var)
    {
        case "456":
        //do something
        $resultOutput .= '\n456 found';
        break;

        case "123":
        //do something
        $resultOutput .= '\n123 found';
        break;

        default:
        //give them an error or something
    }
}

echo $resultOutput;

这本不应该对性能产生太大影响,除非您的代码/配置有一些非常奇怪的地方,您没有告诉我们。尝试通过探查器运行代码。(我使用xdebug+kcachegrind-但您没有说您使用的是什么操作系统)


如何获得页面加载时间?PMA通常不会显示完整的结果集。0.003秒似乎有点乐观。我不太相信你的分析。但是0.5秒当然是非常慢的。

这可能会帮助你找到你的慢代码。它可能会更快,但它不会做同样的事情<代码>=与
=
不同,如果($var='123')
不是支票,则是赋值sorry,=应该是==,打字错误。我的意思是添加isset()会加快速度。
$resultOutput = '';

foreach($result as $var)
{
    // to seize AbsoluteZERO's idea
    switch ($var)
    {
        case "456":
        //do something
        $resultOutput .= '\n456 found';
        break;

        case "123":
        //do something
        $resultOutput .= '\n123 found';
        break;

        default:
        //give them an error or something
    }
}

echo $resultOutput;