вывод сайтов с использованием curl_multi с preg_match_all, сайт загружается медленно - PullRequest
0 голосов
/ 15 марта 2011

У меня есть скрипт, использующий curl-multi, и он просматривает несколько сайтов для содержимого. Мне было интересно, что будет более быстрый способ вывода определенного содержимого для каждого сайта.

<?php // Get the tables for 1 website
       preg_match_all("/\<tbody\>(.*?)\<\/tbody\>/is",
            $res[0], $matches );
       foreach($matches[0] as $value)
    {
        echo $value;
    }

    // Get the tables for site 2
       preg_match_all("/\<div class=\"dealsListS\"\>(.*?)\<\/div\>/is",
            $res[1], $matches );
       foreach($matches[0] as $value)
    {
        echo $value;
    }


    // Get the tables for site 3
       preg_match_all("/\<div class=\"city_save\"\>(.*?)\<\/div\>/is",
            $res[2], $matches );
       foreach($matches[0] as $value)
    {
        echo $value;
    }

    // Get the tables for site 4
       preg_match_all("/\<div class=\"offer-stream\"\>(.*?)\<\/div\>/is",
            $res[3], $matches );
       foreach($matches[0] as $value)
    {
        echo $value;
    }
    ?>

Нужна помощь, чтобы страница не загружалась долго. это только некоторые из них, к которым мне нужно добавить еще.

1 Ответ

1 голос
/ 01 апреля 2011

Можете ли вы попробовать этот код?


<?php
    function extract_data($html_code, $regex) {
       $buffer="";
       preg_match_all($regex, $html_code, $matches );
       foreach($matches[0] as $value)
       {
          $buffer .= $value;
       }
       return $buffer;
    }

    // Get the tables for 1 website
    $buffer = extract_data("/\<tbody\>(.*?)\<\/tbody\>/is", $res[0]);

    // Get the tables for site 2
    $buffer .= extract_data("/\<div class=\"dealsListS\"\>(.*?)\<\/div\>/is", $res[1]);

    // Get the tables for site 3
    $buffer .= extract_data("/\<div class=\"city_save\"\>(.*?)\<\/div\>/is", $res[2]);

    // Get the tables for site 4
    $buffer .= extract_data("/\<div class=\"offer-stream\"\>(.*?)\<\/div\>/is", $res[3]);

    echo $buffer;
?>

...