Как отпарсить большую страницу

Тема в разделе "PHP", создана пользователем alexander-x, 25 июн 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. alexander-x

    alexander-x Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    130
    Симпатии:
    26
    есть сайт, хочу сделать его статическую копию для ускорения работы

    пробую просто копировать:

    PHP:
    $submit_url "http://site/index.php";    
    $pricefile "../price.html";
    $content file_get_contents($submit_url);
    $fp fopen($pricefile'w');
    fwrite($fp$content);
    fclose($fp);

    работает для всех страниц, кроме нужной. она 3-х мегабайтная
    со Снуппи та же хрень :(
     
  2. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    PHP:
    <?php
    $fp 
    fsockopen("www.example.com"80$errno$errstr30);
    if (!
    $fp) {
        echo 
    "$errstr ($errno)<br />\n";
    } else {
        
    $out "GET / HTTP/1.1\r\n";
        
    $out .= "Host: www.example.com\r\n";
        
    $out .= "Connection: Close\r\n\r\n";
        
    fwrite($fp$out);
        while (!
    feof($fp)) {
            echo 
    fgets($fp128);
        }
        
    fclose($fp);
    }
    ?>
    А так?
     
  3. alexander-x

    alexander-x Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    130
    Симпатии:
    26

    вывело на экран
    Success (0) - это первое сообщение.
    подозреваю что в ПХП настройки можно подкрутить, но вот где.
     
  4. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Дай url страницы.
     
  5. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    нет, дело именно в коде(а конкретней в $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);)..скинь свой код, что ты использовал..
     
  6. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    305
    Симпатии:
    38
    Возможно стоит увеличить работу скрипта с 30 сек ну гдет до 1 мин,тк 3 мега многовато если канал не широкий...а так и file_get_contents() должен все отл сливать...
     
  7. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Время и память. Все должно работать.
    Делай для начала set_time_limit(0) в начале скрипта - оно у тебя скорее всего просто не успевает скачать страничку. Если скачивает, но валится на ошибке memory limit - поковыряй php.ini, вот тут подробно написано:
    Перейти по ссылке


    А так все должно работать, и с обычным file_get_contents()
     
  8. Serg1k

    Serg1k Прохожие

    Согласен, попробуй добавить в начало скрипта:
    PHP:
    set_time_limit );
    ini_set 'memory_limit''8M' );
     
  9. alexander-x

    alexander-x Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    130
    Симпатии:
    26
    никак не получается.

    The server encountered an unexpected condition which prevented it from fulfilling the request.
    The script had an error or it did not produce any output. If there was an error, you should be able to see it in the error log.

    если вычитывать

    или success(0) на последний пример
    переменные выставил


    чтоб было понятней вообще что я делаю.
    задача - учкорить Шоп-Скрипт. вызов price делаю статическим т.е. парсинг допустим по ночам и сохранение в файл.

    Перейти по ссылке магазин/index.php?show_price=yes

    так можете на своих магазинах проверить, у кого есть.
     
  10. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    попробуй курл
    PHP:
    <?php
    $ch 
    curl_init();
    curl_setopt($chCURLOPT_URL'http://твой магазин/index.php?show_price=yes');
    curl_setopt($chCURLOPT_HEADER0);
    $content curl_exec($ch);
    curl_close($ch);
    echo(
    $content);
    ?>
     
    alexander-x нравится это.
Статус темы:
Закрыта.