简单的PHP脚本使服务器负载过重

时间:2013-08-01 14:44:17

标签: php for-loop server-load

我有一个简单的PHP脚本,一旦运行,就无法访​​问服务器上的任何其他页面。

脚本就像这样简单:

for($league=11387; $league<=11407; $league++){
 for($i=1; $i<9; $i++){

    //gets the team object here from external resource
    $team = $HT->getYouthTeam($HT->getTeam($HT->getLeague($league)->getTeam($i)->getTeamId())->getYouthTeamId()); 

    if($team->getId() != 2286094){
        $youthTeams[] = $team;
    }

    set_time_limit(10);
 }
}

显然,我应该在这里获得成千上万的“团队”(除了ID为2286094的团队),但是一旦我运行这个脚本,我就无法在服务器上打开任何其他页面,直到它结束并且需要大量的脚本将结果提取到$ youthTeams数组中的时间。

我的目的是创建一个进度条,它可以准确地说明(%)脚本所在的位置,但我不能,因为这个脚本使服务器无法显示任何其他页面(你得到任何其他页面“加载“但它永远不会加载,因为这个脚本在服务器上运行。”

此外,添加子问题:一旦获取了所有这些数据,在一次查询中将它全部插入到mysql数据库中是否明智?

我真的想在这方面了解更多并想完成这项工作,所以请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

也许您可以通过查看时间来确定哪一个查找占用的时间最多?

$t0=microtime(1);
$teamid=$HT->getLeague($league)->getTeam($i)->getTeamId();
echo "lookup teamid:  ".(($t1=microtime(1))-$t0)."<br>";
if (if($team->getId() != 2286094) {
  $youthteamid=$HT->getTeam($teamid)->getYouthTeamId();
  echo "lookup youthteamid:  ".(($t2=microtime(1))-$t1)."<br>";
  $youthteam = $HT->getYouthTeam($youthteamid);
  echo "lookup youthteam:  ".(($t3=microtime(1))-$t2)."<br>total time:  ".($t3-$t0)."<br>";
}