За последние 24 часа нас посетили 19307 программистов и 1739 роботов. Сейчас ищут 1144 программиста ...

Грабер данных

Тема в разделе "Прочие вопросы по PHP", создана пользователем Penegan, 18 июн 2010.

  1. Penegan

    Penegan Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    44
    Симпатии:
    0
    Добрый день!

    Есть скрипт, который вытаскивает информацию с определенной страницы, допустим example.com/page.xml, и обрабатывает ее.

    PHP:
    1.  
    2. <?php
    3. $txt = join("", file("http://example.com/page.xml"));
    4.  
    5. // Записываем информацию в файл на сервере
    6.  
    7. $open= fopen("file.xml", "w+");
    8. fwrite = ($open, $txt);
    9. fclose($open);
    10. ?>
    Все хорошо работает, до тех пор, пока не встречаются страницы размером в 200-300 мб и больше. В этом случае сервер ложится или пишет, что превышена память и завершает скирпт с ошибкой...
    На сколько я понимаю, то скрипт всю информацию, полученную со страницы заносит в оперативную память, которой собственно и не хватает...

    Вопрос в следующем, как сделать скачку файла на сервер в обход оперативной памяти, возможно ли вообще такое? Или в моем случае поможет только увеличение оперативки с последующим изменением лимитов в php.ini?
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Во-первых весь написанный выше скрипт можно уместить в одну единственную строчку.

    PHP:
    1. <?php
    2.  
    3. file_put_contents("file.xml", file_get_contents("http://example.com/page.xml"));
    4.  
    5. ?>
    Касательно вопроса смотрим XmlReader и обращаем внимание на аргументы!
     
  3. Penegan

    Penegan Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    44
    Симпатии:
    0
    Спасибо огромное! Это то, что нужно)
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Apple
    copy()
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    FILE_APPEND?
     
  6. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    да ну. если он копирует с урла, нафиг аппандить