if ($prs === false) { // TODO: add log entry / email notification here continue; } while ($row = pg_fetch_row($prs)) { $mac = strtolower(trim($row[0])); $mac2 = strtolower(trim($row[1])); $pn = strtolower(trim($row[2])); $un = trim($row[3]); $sn = trim($row[4]); $guid = trim($row[5]); if ($mac) { processRecord($mac, $un, $sn, $guid); } if ($mac2 && preg_match("/^(macmini|imac)/", $pn)) { processRecord($mac2, $un, $sn, $guid); } } // delete invalid device records from cache $q = mysqli_prepare($conn, "DELETE FROM user_devices WHERE line_id = ?"); mysqli_stmt_bind_param($q, "i", $lineId); // $toDelete is keyed on line_id $lineIds = array_keys($toDelete); foreach ($lineIds as $lineId) { if (mysqli_stmt_execute($q) === false) { exit("Unable to delete cached device record: " . mysqli_error()); } $deleted++; } // add new device records to cache $q = mysqli_prepare($conn, "INSERT INTO user_devices (server_name, mac_address, username, serial_number, user_guid) VALUES (?, ?, ?, ?, ?)");
$times['fetch'] = microtime(TRUE); $retry = 0; do { $harvester->fetchContent(); if ($retry > 0) { print "Needs retrying at {$total} ({$retry})\n"; } $fetchOk = checkFetchState($harvester, $total, $retry); } while ($fetchOk === FALSE && ++$retry <= MAX_RETRY); $times['fetch'] = microtime(TRUE) - $times['fetch']; $currentRecordCount = 0; if ($fetchOk) { $harvester->processContent(); while (($record = $harvester->getNextRecord()) != null) { $currentRecordCount++; $metadata = processRecord($record); if (!empty($metadata)) { fwrite($out, json_encode($metadata) . LN); } } } fclose($out); $doNext = false; $token = array(); if (!$fetchOk) { $status = 'broken with wrong HTTP response'; } else { if (!$harvester->hasResumptionToken()) { $status = 'finished'; } else { $token = $harvester->getResumptionToken();