Wenas,,
Tengo un programa el cual recolecta jugadores de una página web.
El problema es que al realizar un for e intentar recoger datos del jugador la página me devuelve:
failed to open stream: HTTP request failed! HTTP/1.0 403
Esto me sucede despues de mandar cierta cantidad de peticiones, al principio no sucece.
El PHP:
Código PHP:
Ver original$deaths = $t->characterDeaths($core->fixName($row["name"]));
foreach($deaths as $d)
{
if($d["level"]!="")
{
"char_id"=>$row["id"],
"level"=>$d["level"],
"reason"=>$d["reason"]
);
$core->Deaths($info);
}
}
La clase:
Código PHP:
Ver originalpublic function characterDeaths($name)
{
if (false !== stripos($html, "<b>Could not find character</b>")) { throw new CharacterNotFoundException($name);
}
$domd = $this->getDOMDocument($html);
$domx = new \DOMXPath($domd);
$rows = $domx->query("//b[text() = 'Character Deaths']/ancestor::table[1]//tr[position() > 1]");
foreach ($rows as $row) {
$date = $row->firstChild->nodeValue;
$text = $row->lastChild->nodeValue;
preg_match("/(.+) at Level (\\d+) by (.+)\\./", $text, $matches);
"date" => \DateTime::createFromFormat("M d Y, H:i:s T", $date),
"level" => $matches[2],
"reason" => $matches[3],
);
}
return $deaths;
}
Estoy pensando como evitar que a cierta cantidad de datos no me devuelva el error 403 pero no se me ocurre como.
Mas o menos son unos 1.000 registros los que tiene que recorrer y la idea es que al script no le tome tanto tiempo recoger sus datos.