Я использую запрос PHP cURL для получения большого количества данных (футбольных матчей) из API (10000 строк и растет). Я собираю все сразу как массив, а затем зацикливаюсь на всем этом. Затем проверяется каждая строка (совпадение), чтобы увидеть, есть ли у нее соответствующий пост, который уже существует в WordPress Если это так, то оно пропускается - если нет, то оно импортируется как новое сообщение.
Мне пришлось увеличить множество переменных PHP, чтобы он работал, но он становится неустойчивым из-за огромного количества данных. Мне интересно, какой самый эффективный способ разбить это на более мелкие куски был бы?
API позволяет передавать параметр "page". Можно ли разделить вызов на более мелкие куски, используя параметр страницы, при этом гарантируя, что PHP не прекратит работу? Будут ли отдельные запросы javascript AJAX более эффективными? Ищите то, что наиболее эффективно с точки зрения сервера.
private function syncMatches($event_id) {
$get_matches = $this->API->GetMatches($event_id);
foreach ($get_matches as $key => $match) {
$match_id = isset($match->MatchID) ? $match->MatchID : null;
$match_event_id = isset($match->EventID) ? $match->EventID : null;
$match_date = isset($match->EventDate) ? $match->EventDate : null;
$match_away_team = isset($match->AwayTeamNameFull) ? $match->AwayTeamNameFull : null;
$match_home_team = isset($match->HomeTeamNameFull) ? $match->HomeTeamNameFull : null;
if (!$match_id || !$match_date || !$match_away_team || !$match_home_team) {
continue;
}
$post_name = $match_date . ' - ' . $match_away_team . ' @ ' . $match_home_team;
$post_id = $this->existingRowHandler('match', 'match_id', $match_id);
if ($post_id !== 0) {
continue;
}
$post_meta = $this->createPostMeta($match);
$insert_id = $this->insertPost($post_id, $post_name, 'match', $match_id, $post_meta);
}
return time();
die();
}