Php 将mysql\u查询与mysql\u fetch\u行一起使用时的性能问题

Php 将mysql\u查询与mysql\u fetch\u行一起使用时的性能问题,php,mysql,Php,Mysql,我不太熟悉mySQL和php。帮助朋友解决他们的性能问题 它们有一个名为report.php的文件,该文件查询数据库,然后输出查询中的所有行和列 当多个用户执行报告时,此执行似乎会锁定数据库并导致CPU使用率达到100%。这里有什么明显的我遗漏的吗 report.php的结构如下所示 include('../settings2.inc'); $type=$_GET['report']; if(isset($_GET['report'])) { switch($type){ c

我不太熟悉mySQL和php。帮助朋友解决他们的性能问题

它们有一个名为report.php的文件,该文件查询数据库,然后输出查询中的所有行和列

当多个用户执行报告时,此执行似乎会锁定数据库并导致CPU使用率达到100%。这里有什么明显的我遗漏的吗

report.php的结构如下所示

include('../settings2.inc');

$type=$_GET['report'];


if(isset($_GET['report']))
{
   switch($type){
    case uuppgroup:     $export=mysql_query("select * from uuppgroupdetails order by id");
                        break;

    case Beneficiary:   $export=mysql_query("select * from uupp_ben_details order by ben_id");
                            break;

    (many other switch cases over here
..
..

}


$fields = mysql_num_fields ( $export );  

for ( $i = 0; $i < $fields; $i++ ) 
{     
  $header .= mysql_field_name( $export , $i ) . "\t"; 
}  

while( $row = mysql_fetch_row( $export ) ) 
{     
  $line = '';     
  foreach( $row as $value )     
  {                                                     
    if ( ( !isset( $value ) ) || ( $value == "" ) )         
    {             
       $value = "\t";         
    }         
    else         
    {             
      $value = str_replace( '"' , '""' , $value );             
      $value = '"' . $value . '"' . "\t";         
    }         
    $line .= $value;     
  }     
  $data .= trim( $line ) . "\n"; 
} 

$data = str_replace( "\r" , "" , $data );   }

$vExcelFileName=$type.".xls";
#$vExcelFileName="export". ".doc";
header("Content-type: application/x-ms-download"); //#-- build header to download the excel file
header("Content-Disposition: attachment; filename=$vExcelFileName");
header('Cache-Control: public');
print "$header\n$data"; 
/*
}
确保包括:

mysql_close($dbcon);
如果这些文件是定期生成的,为了停止对数据库的不断获取,如果您每30分钟/小时运行一次CRON作业来生成这些文件,然后当有人请求时,可以在您选择的文件夹中找到这些文件,例如/downloads/reports/受益人.pdf


由于您的代码从各个部分看起来都很好,所以我最好的猜测是您的一些其他查询可能会破坏它。我唯一能猜到的是,当多个用户同时从数据库请求数据时,它在尝试处理时挂起,因此100%的cpu使用率

显示select语句使用的表,因为主要原因可能是*而不是您需要的几列。另外,请使用pdo而不是mysql函数,原因一是它将被弃用,原因二是您可以移植到另一个sql,如postgresqlIt,应该作为注释而不是答案。这并不能解决问题,这只是一个信息。你可以看到我只有39个,我不能评论。然而,如果他尝试了这个方法,并且确实解决了这个问题,那么这就是一个答案,否则他可以对此进行评论,并寻求进一步的帮助。我现在正在查看他的代码,看看还有什么可以实现的。所以你需要赢得声誉,但你不应该发表评论作为答案。如果你做不到,如果你没有可能的解决方案或解释就不要做。你的答案必须经过编辑。我一直在尝试,我昨天已经开始回答了大约10个问题,其中2个被认为是正确的,但如果人们把它看作是评论,而不是答案,它将被否决,你将失去声誉!