Задать вопрос

Медленный парсинг XML средствами PHP. Как увеличить скорость?

Есть задача парсить xml файлы с видео-хостинга vimeo. Скрипт реализации:
<?php
function vimeo_parse($video_id) {
	$url = "http://vimeo.com/api/v2/video/".$video_id.".xml";
	$xml = simplexml_load_file($url);

	$vimeo_title = $xml->video->title;
	$vimeo_thumb = $xml->video->thumbnail_large;

	return array($vimeo_title,$vimeo_thumb,$video_id);
}

// пример использования
// list ($vimeo_title,$vimeo_thumb,$vimeo_id) = vimeo_parse("27973852");
// echo $vimeo_title;
// echo $vimeo_thumb;
// echo $vimeo_id;
?>


На странице нужно вывести порядка 20-ти видео. Каждый парсинг выполняется примерно 0.4 секунды, а это 20*0.4 = 8 секунд парсинга (+загрузка самой страницы), что совершенно не хорошо. Каким способом можно избежать такой долгой работы скрипта?
  • Вопрос задан
  • 3523 просмотра
Подписаться 5 Оценить Комментировать
Решение пользователя Валера Удав К ответам на вопрос (5)
TARAKANhoy
@TARAKANhoy Автор вопроса
Переписал скрипт с кэширование данных, теперь всё летает:
<?php
function vimeo_parse($video_id) {
	$fp = fopen($video_id.'.txt', 'r+');
	if (!$fp) {
		$fp = fopen($video_id.'.txt', 'w+');

		$url = "http://vimeo.com/api/v2/video/".$video_id.".xml";
		$xml = simplexml_load_file($url);

		$vimeo_title = $xml->video->title;
		$vimeo_thumb = $xml->video->thumbnail_large;

		$text_write = $vimeo_title."\n".$vimeo_thumb."\n".$video_id;
		fwrite($fp, $text_write);
		fclose($fp);
		return array($vimeo_title,$vimeo_thumb,$video_id);
	}
	else {
		$stack = array();
		while(!feof($fp)) { 
			array_push($stack,fgets($fp));
		}
		fclose($fp);
		return $stack;
	}
}

// пример использования
// list ($vimeo_title,$vimeo_thumb,$vimeo_id) = vimeo_parse("27973852");
// echo $vimeo_title;
// echo $vimeo_thumb;
// echo $vimeo_id;
?>
Ответ написан