Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Экономно пропарсить собственный сайт.
 
 автор: Владимир55   (01.02.2010 в 22:40)   письмо автору
 
 

Потребовалось перенести на сервер большой объём информации. Поскольку мелкие файлы передаются долго, то я заархивировал каждую папку в самостоятельный архив, в результате чего получились архивные файлы по 350-400 метров, каждый из которых закачивается за пару минут.

И тут случайно обнаружилось, что архив на сервере не всегда восстанавливается полностью. Серверный скрипт для проверки не идет - то не хватает места, то не снимаемое ограничение по времени работы скрипта, то сбрасывает без объяснения причин.

Хочу просканировать из денвера, но скачивать каждую страницу - это долго и трафикоемко. Можно ли как-то проверить сам факт наличия страниц, не скачивая их полностю?

  Ответить  
 
 автор: ddhvvn   (01.02.2010 в 23:23)   письмо автору
 
   для: Владимир55   (01.02.2010 в 22:40)
 

Используйте сокеты )

  Ответить  
 
 автор: Trianon   (01.02.2010 в 23:58)   письмо автору
 
   для: Владимир55   (01.02.2010 в 22:40)
 

для начала нужно сравнить crc32 файлов архива. Это мгновенный практически тест.
Вероятность того, что архив искажен, а crc32 у него совпала 1/4000000000.
Ну умножьте на число архивов. Все равно будет довольно мало.

Парсинг здесь настолько не при чем, что подмывает...

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 00:18)   письмо автору
 
   для: Trianon   (01.02.2010 в 23:58)
 

Это я сделал с самого начала. Только не crc32, а md5.

Архивы прошли нормально, но разархивирует их сервис, встроенный в ВДС. И я вижу, что папок меньше, чем посылалось. Тогда я повторил эту операцию и папок стало столько, сколько должно быть. Но неизвестно, есть ли недочеты в количестве файлов.

  Ответить  
 
 автор: Trianon   (02.02.2010 в 00:19)   письмо автору
 
   для: Владимир55   (02.02.2010 в 00:18)
 

md5 на несколько порядков более ресурсоемкая функция.

Я вообще обычно думаю, перед тем, как советовать :(

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 00:22)   письмо автору
 
   для: Trianon   (02.02.2010 в 00:19)
 

Ресурсов хватило - проверка уже произведена.

Вы полагаете, что нужно повторить ее с crc32?

  Ответить  
 
 автор: Trianon   (02.02.2010 в 00:24)   письмо автору
 
   для: Владимир55   (02.02.2010 в 00:22)
 

нет, конечно.
Но процесс распаковки , если его логгировать, и проверять код завершения - дает детерминированный результат.
Тогда я вообще не понимаю, в чем проблема.
Полагал, Вы решаете, как вычленить поломавшиеся архивы.

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 00:30)   письмо автору
 
   для: Trianon   (02.02.2010 в 00:24)
 

Что происходит в недрах ВДС, мне неведомо. Процесс разархивации длится довольно долго и браузер связи с панелью закрывается. Может, там все нормально. А может и нет. Как узнать? Опросить каждый файл и тем самым проверить его наличие.

Разве не так?

  Ответить  
 
 автор: Trianon   (02.02.2010 в 00:32)   письмо автору
 
   для: Владимир55   (02.02.2010 в 00:30)
 

процесс разархивации порождает вывод лога/отчета на экран.
Этот вывод можно (перенаправив) писать в файл.
А файлы логов качать/смотреть браузером.

Можно перенаправлять не в файл, а в поток браузеру.
Но это ... ~ ~ ~

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 00:36)   письмо автору
 
   для: Trianon   (02.02.2010 в 00:32)
 

Нет этого в Панели ВДС.
Вообще ничего нет: процесс начат - процесс завершен.

  Ответить  
 
 автор: Trianon   (02.02.2010 в 00:37)   письмо автору
 
   для: Владимир55   (02.02.2010 в 00:30)
 

И я может и дилетант в общении с ВДС, но мне казалось, что по SSH-протоколу там открывается обычное консольное окно.
С обычной командной строкой.
Что хочешь , то и запускай. Куда хочешь, туда и смотри.
Хоть в недра, хоть в гланды, хоть в выхлопную трубу.

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 00:40)   письмо автору
 
   для: Trianon   (02.02.2010 в 00:37)
 

А, вот оно что!

По SSH наверняка можно практически всё, но я ограничиваюсь панелью. SSH избегаю из-за отсутствия русскоязычного интерфейса. Да и вообще - Панель проще.

  Ответить  
 
 автор: Trianon   (02.02.2010 в 00:42)   письмо автору
 
   для: Владимир55   (02.02.2010 в 00:40)
 

Но Вы же апологет применения php для любой нужды - можно же самому (из php) архиватор запускать, перенаправляя поток.

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

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 00:51)   письмо автору
 
   для: Trianon   (02.02.2010 в 00:42)
 

Если бы я знал, что возникнет такая неопределенность, то, вероятно, предпринял бы какие-то меры.

Сейчас же я ищу способ просканировать наличие файлов, не скачивая их полностью. Если такого способа нет, то придется скачать...

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 00:54)   письмо автору
 
   для: Владимир55   (02.02.2010 в 00:51)
 

Мне нужно просто получить и проанализировать ответ сервера - есть файл или нет его. Вот как это сделать?

  Ответить  
 
 автор: Trianon   (02.02.2010 в 01:19)   письмо автору
 
   для: Владимир55   (02.02.2010 в 00:54)
 

запросом HEAD - задача по определению размера удаленного файла в одноименном разделе.

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 01:31)   письмо автору
 
   для: Trianon   (02.02.2010 в 01:19)
 

Что Вы имеете в виду?

  Ответить  
 
 автор: Trianon   (02.02.2010 в 01:37)   письмо автору
 
   для: Владимир55   (02.02.2010 в 01:31)
 

Раздел "Задачи" http://softtime.ru/info/task.php
Задача 13 - Определение размера файла на удалённом хосте (20.03.06) -
http://softtime.ru/info/task.php?id_article=83
Если Вас интересует мое решение - вот:
http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=15132

  Ответить  
 
 автор: Владимир55   (02.02.2010 в 01:45)   письмо автору
 
   для: Trianon   (02.02.2010 в 01:37)
 

Виртуозно.

  Ответить  
 
 автор: alexon   (02.02.2010 в 06:37)   письмо автору
 
   для: Владимир55   (02.02.2010 в 00:54)
 

У менеджера закачек TeleportPro существует именно такая функция как Вам нужно - закачка структуры сайта без заполнения ее данными. Закачка происходит очень быстро, правда есть ограничение на кол-во файлов (500), но ее можно преодолеть указывая каждый раз конкретную директорию. А вообще парсинг сайта это другая задача.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования