Mam taki kod:
<?php
include('config.php');
$_POST['data'] = date('Y-m-d');
try
{
$dbh = $pdo = new PDO('mysql:host='.$host.';dbname='.$dbname.'', "$user", "$pass"); // polaczenie z baza danych
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // polaczenie z baza danych
$dbh -> query('SET NAMES utf8'); // zmiana kodowania
$stmt = $pdo -> query('SELECT * FROM fraza LEFT JOIN strona USING (adresid) '); // wybieranie danych z tabeli
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); }
foreach($stmt as $row){
if(!isset($results[$row['frazaid']])){ $results[$row['frazaid']] = array(); }
$adres = $row['adres']; // zamienianie
$slowo = $row['slowo']; // zamienianie
// Monitoring pozycji
$sSite = "$adres";
$sQ = "$slowo";
$sPackCnt = 10; // ilość podstron
$sPackSize = 10; // ilość wyników na stronie
$sStartPos = 0; // pozycja startowa
$sFinishPos = '-'; // pozycja końcowa
$sLinkRegExp = '/<h3 class=r><a href="([^"]+)" class=l>/';
$sURLTpl = 'http://www.google.pl/search?hl=pl&q=%s';
for($sPack = 0; $sPack < $sPackCnt; $sPack++)
{
$sStartPos = $sPackSize * $sPack;
$rC = curl_init();
curl_setopt($rC, CURLOPT_HEADER, 0);
curl_setopt($rC, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($rC, CURLOPT_VERBOSE, 1);
curl_setopt($rC, CURLOPT_REFERER, 'www.google.pl');
curl_setopt
($rC, CURLOPT_URL
, sprintf($sURLTpl, urlencode($sQ)) . '&start=' . $sStartPos ); $sData = curl_exec($rC);
curl_close($rC);
foreach($aResults as $iKey => $sRow) {
$sFinishPos = $sStartPos + $iKey + 1;
$sPack = $sPackCnt;
}
}
}
{
$_POST['miejsce'] = $sFinishPos;
$_POST['adresid'] = $row['adresid'];
$_POST['frazaid'] = $row['frazaid'];
$pdo -> exec('INSERT IGNORE INTO `pozycja` (`adresid`, `frazaid`, `miejsce`, `data`)VALUES( ''.$_POST['adresid'].'',
''.$_POST['frazaid'].'',
''.$_POST['miejsce'].'',
''.$_POST['data'].'')');
}
//koniec monitoringu pozycji
$results[$row['frazaid']][] = $row;
}
foreach($results as $frazaid => $r){
foreach($r as $row){
echo sprintf('%s - %s ', $row['adres'], $row['slowo']); }
}
?>
Działa mi to jako CRON. Przy małej liczbie sprawdzanych fraz jest wszystko ok. Przy dużej jest problem.
Wydaje mi się, że to powinno być funkcją, a skrypt powinien zawierać opcje sprawdzającą, które frazy były sprawdzone a które nie. Później bierze sprawdza i zapisuje przez tą funkcję. Dlatego wolałbym z kimś o tym porozmawiać jak to zrobić bo sam nie daje z tym rady (nie znam na tyle PHP a rzuciłem się z tym na głęboką wodę).