PHP: уменьшить нагрузку на функцию, которая получает содержимое ‹title› с внешнего ресурса.

Я создал функцию, которая проверяет, содержит ли тег <title> внешней страницы определенные слова (между другими в заголовке). Если проверка положительна, она должна отображать (всю) страницу <title>.

<?php

function file_get_contents_curl($url)
{
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}

$html = file_get_contents_curl("http://www.lastfm.it/user/lorenzone92/now");

$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');

$title = $nodes->item(0)->nodeValue;

if (strpos($title,'in ascolto') !== false) {
echo "$title". '<br>';
}

?>

Он работает нормально. Меня беспокоит потребление памяти и нагрузка на сервер. Проблема в том, что я не могу кэшировать $html, потому что это живая вещь... есть идеи? Мне нужно захватить всю страницу, чтобы просто получить доступ к <title>? Другие методы вместо cURL и file_get_contents для снижения нагрузки на сервер? Или я просто слишком озабочен..? :)

Примечание. Не беспокойтесь о версии PHP (без ограничений, я на своем VPS, на котором установлен PHP 5.5.7: D).


person MultiformeIngegno    schedule 27.12.2013    source источник
comment
Я не уверен, но я думаю, что нет никакого решения вашей проблемы.   -  person Eisa Adil    schedule 28.12.2013


Ответы (3)


Я не знаю, полезно ли это... но этот другой вопрос (который, кажется, связан с вашим), похоже, имеет много ответов... вот ссылка

Получить название веб-сайта по ссылке

person Goikiu    schedule 27.12.2013
comment
Ссылки на другие вопросы должны быть в комментариях - person MultiformeIngegno; 28.12.2013
comment
извините, еще не читал об этом ._. я не буду делать это в другой раз. - person Goikiu; 28.12.2013

Я думаю, вам нужно загрузить всю страницу. Вы не знаете, на какой позиции и какой длины находится тег заголовка, поэтому вы не можете прочитать, например. первые 1000 символов. Я не знаю, сколько страниц вы пытаетесь загрузить одновременно, но вы не загружаете все мультимедийные данные, такие как изображения и файлы css, поэтому ваш проанализированный HTML-код не должен быть слишком большим.

person iMx    schedule 27.12.2013