PHP - цикл cURL с увеличением идентификатора URL - PullRequest
0 голосов
/ 16 ноября 2018

со следующим кодом имя с идентификатором (каждое имя в gnd может быть адресовано идентификатором) получено через интерфейс GND. Это работает.

Теперь я хочу получить много имен одновременно с помощью цикла cURL. Идентификатор URL-адреса всегда должен быть увеличен на единицу, и запрос cURL должен зацикливаться. Как я могу это сделать?

С этим кодом я получаю, например, имена из базы данных GND

<?php

header('Content-type: text/html; charset=utf-8');
$User_Agent = 'Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0';

$url = "http://hub.culturegraph.org/entityfacts/118600001";      

$request_headers = [];
$request_headers[] = 'Accept: application/json';
$request_headers[] = 'charset=utf-8';
$request_headers[] = 'Content-Type: application/json; charset=utf-8';
$request_headers[] = 'Accept-Encoding:  gzip, deflate, identity';
$request_headers[] = 'Accept-Language: de,en-US;q=0.7,en;q=0.3';            

for ($i = 1; $i <= 10; $i++)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $User_Agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, "");

$result = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
}
curl_close($ch);

$data = json_decode($result, true);
if ($code == 200) {
$data = json_decode($result, true);
echo 'Erfolg';
} else {
$error = $data['Error'];
echo 'Beim anfordern der GND-Daten ist ein Fehler aufgetreten: Fehlercode ' . $error;
echo ' <a href="PHP_skript_login.php">Zurueck</a><br />';
}
var_dump($data['preferredName']);

Результат для URL с идентификатором 118600001 = Герхардт фон Рейтерн

Но как должен быть адаптирован код, чтобы выводились также имена URL-адресов 118600002, 118600003 и т. Д.? Так часто, как это указано. Будь то 100 или 1000 раз.

1 Ответ

0 голосов
/ 16 ноября 2018

измените вашу переменную $ url на что-то вроде $ base_url, который является URL-адресом без идентификатора

$base_url = "http://hub.culturegraph.org/entityfacts/";      

Затем в цикле for вы делаете:

$ch = curl_init($base_url . (118600001 + $i));

это правило можно удалить, в этом нет необходимости:

curl_setopt($ch, CURLOPT_URL, $url);

Вы также должны обработать ответ внутри цикла for, иначе вы увидите только имя последнего человека после невероятно долгого времени загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...