ปรึกษา code php - อยากจะเก็บ รายละเอียด url ที่ google index ไปใน web เรา ด้วย ajax google api
ตอนนี้เจอปัญหา ว่า ดึง มาได้ แค่หน้าแรก ๆ เอง แล้ว ก็ ขึ้น out off range ซะแล้ว ทั้งที่จำนวน index มีเยอะ มาก ๆ
ตัวอย่าง code ตัดมาส่วนหนึ่ง
require_once('JSON.php');
$urltext = "";
$urlvisible = "";
$urltitle ="";
$urlcontent="";
$listloop = 5;
$count=1;
$dbconfig = new DbConfiguration();
$lastget = $dbconfig->lastget;
echo "last : ".$lastget;
for( $i = 0; $i <= $listloop; $i++) {
$varstart = $lastget + ($i*8);
$url = 'http://ajax.googleapis.com/ajax/services/search/web?rsz=large&v=1.0&start='.$varstart.'&hl=th&q='.urlencode('site:'.'[url=http://www.xxxxxx.com]www.xxxxxx.com[/url]');
// use fopen and fread to pull Google's search results
sleep(rand(5, 10));
echo "get loop".$varstart."<br />";
$handle = fopen($url, 'rb');
$body = '';
while (!feof($handle)) {
$body .= fread($handle, 8192);
}
fclose($handle);
// now $body is the JSON encoded results. We need to decode them.
$json = new Services_JSON();
$json = $json->decode($body);
// now $json is an object of Google's search results and we need to iterate through it.
foreach($json->responseData->results as $searchresult)
{
if($searchresult->GsearchResultClass == 'GwebSearch')
{
$urltext = $searchresult->unescapedUrl;
$urlfrom = $searchresult->visibleUrl;
$urltitle =$searchresult->titleNoFormatting;
$urlcontent=$searchresult->content;
$urlgetdate = gmdate("Y-m-d\TH:i:s\Z");
$strText = $count.",".$urltext.",".$urlfrom.",".$urltitle.",".$urlcontent.'\n\r';
fwrite($objFopen, $strText);
$qtext = "SELECT urltext FROM urllists WHERE urltext='".$urltext."'";
$result =& $db->query ($qtext);
if (DB::isError ($result))
die ("SELECT failed: " . $result->getMessage () . "\n");
if($result->numRows () <= 0){
$txtsql = "INSERT INTO urllists (id, urltext, urlfrom,urltitle,urlcontent,urlgroup ,urlgetdate) VALUES
(0,'".$urltext."','". $urlfrom."' ,'". addslashes($urltitle)."' ,'".addslashes($urlcontent)."','".$varstart."','".$urlgetdate."')";
$result =& $db->query ($txtsql);
if (DB::isError ($result))
die ("INSERT failed: " . $result->getMessage () . "\n");
$count++;
echo $urlvisible.' '.$urltitle.'<br />';
}
}
}
$dbconfig->lastget = $varstart;
}