Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ru:formcrawler_php [2013/02/08 05:31] (current)
Line 1: Line 1:
 +[[content|Оглавление]] / [[additional_programs|Дополнительные программы]]
 +====== FormCrawler (php) ======
  
 +{{ :​ru:​crawler_full.gif |}}
 +
 +===== Описание программы formCrawler (c) Botmaster Labs =====
 +==== 1. Краткое описание:​ ====
 +На сайтах,​ заданных в текстовом файле **<​папка_сайта>/​formcrawler/​src/​LinksList id1.txt** (формат файла - текстовый список доменов или ссылок) formCrawler ищет формы, исключая поисковые,​ и складывает результат в текстовый файл **<​папка_сайта>/​formcrawler/​res/​FormsFound.txt** в формате:​ **исходная_ссылка_или_домен - ссылка_с_найденной_формой** Если не найдено - складывает в файл **<​папка_сайта>/​formcrawler/​res/​FormsNotFound.txt** в формате:​ **исходная_ссылка_или_домен - текст_ошибки**
 +
 +formCrawler состоит из двух функциональных частей:​ из **демона** (**daemon** //​англ.//​) и админки,​ общающиеся между собой,​но работающие независимо при отсутствии такого общения.
 +
 +Порядок работы:​ админ через админку запускает демон и управляет им. Демон в свою очередь,​ обрабатывает страницы сайтов,​ сохраняет результаты и общается с админкой.
 +
 +==== 2. Установка:​ ====
 +=== 2.1. Требования к железу сервера ===
 +  - Интернет-канал от 1 Мбит/​с.
 +  - Объём оперативной памяти от 1 ГБ.
 +  - Объём дискового пространства от 10 ГБ.
 +=== 2.2. Требования к ПО сервера ===
 +
 +
 +Apache, например,​ 2.4 \\
 +Хорошо,​ если Apache будет настроен применять директивы,​
 +заданные в файлах .htaccess - это лучше обезопасит
 +от доступа к Вашим результатам извне.
 +
 +PHP 5.3 обязательно с поддержкой libevent, sockets.
 +Должно быть разрешено выполнение функций PHP:
 +exec() - для Linux, popen(),​pclose() - для Windows
 +Это нужно для запуска демона из админки,​
 +иначе его придётся запускать вручную из командной строки.
 +Должны быть разрешены короткие тэги (**short_open_tag = On**).
 +Скриптам должно быть выделено 1 ГБ памяти.
 +
 +Файрволл должен пропускать tcp-соединения,​ устанавливаемые PHP с сайтами.
 +
 +Примечание для Windows. \\
 +В Windows по умолчанию число одновременно открываемых соединений ограничено 10.
 +Если не устраивает,​ надо поискать решение в интернете по словам
 +"​**half-open limit fix**"​. \\
 +На сегодня (2012-05-10) для Windows можно взять
 +  * Apache 2.4.2 отсюда [[http://​www.apachelounge.com/​download/​]]
 +  * PHP 5.3.13 отсюда [[http://​windows.php.net/​download/#​php-5.3-ts-VC9-x86]]
 +  * php_libevent.dll отсюда [[http://​vladimirbarbarosh.blogspot.com/​2011/​05/​compile-php-536-pecl-libevent-004.html]]
 +   ​
 +=== 2.3. Установка ===
 +Разархивируйте файлы в корень сайта. \\
 +В Linux на все создавшиеся папки назначьте всем права на чтение и запись - 0666. \\
 +на все файлы - тоже 0666.
 +
 +=== 2.4. Настройка запуска из командной строки в Linux (в Windows не обязательно) ===
 +Найдите папку с запускаемыми файлами,​ используя команду **whereis**,​ например,​
 +<​code>​
 +whereis php
 +</​code>​
 +или
 +<​code>​
 +whereis bash
 +</​code>​
 +Создайте в папке с запускаемыми файлами файл **formcrawler** с нижеследующим содержимым,​ только с Вашими путями до bash, корня сайта и php.
 +<​code>​
 +------------ Начало файла:
 +#!/bin/bash
 +cd <​папка_сайта>​
 +/​usr/​bin/​php -f formcrawler_daemon.php
 +------------ Конец файла.
 +</​code>​
 +Проставьте на файл права 0777. Админка будет использовать его для запуска демона. После этого, набирая в командной строке **formcrawler**,​ сможете его запускать консольно. Проверьте,​ запускается ли консольно.
 +=== 2.5. Настройка доступа в админку ===
 +Укажите доступ в админку. Для этого в файле **<​папка_сайта>/​formcrawler/​admin_ips.txt** пропишите IP, с которых можно заходить в админку,​ каждый IP на своей строке. Диапазоны задаются недоуказанием полного IP. Например,​ если необходим доступ с локальных айпи //​127.*.*.*//​ и //​192.168.*.*//​ следует написать:​
 +<​code>​
 +127.
 +192.168.
 +</​code>​
 +В случае диапазонов точка в конце обязательна. После символа # текст считается комментарием,​ пустые строки разрешены.
 +
 +=== 2.6. Указание параметров демона ===
 +В конфиге **<​папка_сайта>/​formcrawler/​server_cfg.php** нужно, соблюдая синтаксис языка PHP и кодировку UTF-8 без BOM, указать параметры демона,​ используя справку внутри этого файла. Для правки рекомендуется использовать редактор с подсветкой синтаксиса,​ например,​ Notepad++ [[http://​notepad-plus-plus.org/​]]
 +
 +=== 2.7. Задание списка сайтов для поиска формы. ===
 +Положите файл с заданиями в папку сайта **<​папка_сайта>/​formcrawler/​src/​LinksList id1.txt** В Linux установите права для чтения - 0644.
 +
 +=== 2.8. Установка завершена. ===
 +
 +==== 3. Использование. ====
 +
 +=== 3.1 Откройте в браузере админку. ===
 +Зайдите по адресу:​ [[http://<​ваш_сайт>/​formcrawler.php]] \\ Админская часть доступна тем IP, которые прописаны в файле **<​папка_сайта>/​formcrawler/​admin_ips.txt** (см. пункт 2.3.) \\ Остальные видят ошибку **404 Not Found** \\ Админку желательно открывать в браузерах Firefox, Chrome, Opera.
 +
 +=== 3.2. Через некоторое время отобразится текущее состояние демона. ===
 +Если не запущен,​ то "can start"​.
 +Если запущен,​ то будет указан его IP и порт.
 +
 +Прочитайте блок help внизу админки,​ нажав на кнопку [+],
 +чтобы познакомиться с сокращениями интерфейса,​ которые позже
 +позволят быстрее воспринимать часто меняющуюся информацию.
 +
 +=== 3.3. В блоке "​threads control"​ установите необходимое количество одновременно обрабатываемых сайтов (далее для краткости "​число потоков",​ что не точно в терминах программирования). ===
 +Для начала можно указать 10.
 +
 +=== 3.4. В блоке "​deamon control"​ нажмите кнопку [start]. ===
 +Через некоторое время демон должен запуститься и начать выполнять задания,​
 +постепенно выходя на заданое число потоков.
 +
 +=== 3.5. Выбор оптимального числа потоков. ===
 +Если у Вас быстрый канал до вашего сайта с **formCrawler**,​ то Вы можете легко подобрать оптимальное число потоков.
 +Т.е. максимальное число для конкретного сервера,​ такое,
 +что на все потоки хватает и интернет-канала,​ и памяти,​ и процессора.
 +  - Для подбора постепенно увеличивайте число потоков во время обработки сайтов. Когда прорисовка состояний потоков в современных браузерах Firefox, Chrome, Opera будет происходить с задержкой около 15-30 секунд,​ значит достигнут максимум потоков.
 +  - Установите число потоков,​ равное 80% от этого числа потоков. Через некоторое время число потоков снизится и прорисовка должна стать снова быстрой.
 +
 +=== 3.6. При установке бОльшего числа потоков,​ их число плавно растёт до заданного значения. ===
 +
 +При установке меньшего числа потоков,​ их число снижается не сразу,​а в момент,​ когда заканчивается обработка одного сайта или нескольких.
 +
 +=== 3.7. Для плавной остановки демона установите 0 потоков. ===
 +
 +Демон дообработает сайты. После того как список потоков станет пустым,​
 +демон можно останавливать кнопкой [stop]. Для срочной остановки сразу
 +нажимайте [stop]. После этого задания будут выполняться заново.
 +
 +=== 3.8. В процессе обработки общий процент будет меняться по мере выдачи заданий,​ а не окончания их обработки. ===
 +Т.е. если дошло до 100%, а что-то ещё доделывается - это нормально.
 +
 +=== 3.9. Открытая админка на скорость работы демона влияет слабо. ===
 +Обновляет страницу примерно раз в 4 секунды,​ тогда как демон за 4 секунды обрабатывает в десятки раз больше страниц. Точное число зависит от числа потоков
 +и свойств серверов сайтов. Сумма просмотренных страниц отображается около общего процента.
 +
 +=== 3.10. Текущая позиция обрабатываемого файла находится в файле <​папка_сайта>/​formcrawler/​src/​src_pos.php ===
 +
 +Для того, чтобы начать обработку всех сайтов с начала - надо его удалить.
 +
 +==== 4. Решение возможных проблем ====
 +=== 4.1. Если админка не работает,​ то донастроить сайт. ===
 +=== 4.2. Если демон не стартует через админку. ===
 +Попробовать запустить из консоли. Для этого надо перейти в папку сайта и выполнить
 +<​code>​
 +php -f formcrawler_daemon.php
 +</​code>​
 +=== 4.3. Если демон не стартует через админку,​ но стартует из консоли. ===
 +Разрешить PHP-функции exec,​popen,​pclose (см. пункт 2.2).
 +
 +=== 4.4. Если демон не стартует ни через админку,​ ни из консоли. ===
 +Прочесть ошибки PHP. Убедиться,​ что установлен и включен libevent (см. пункт 2.2).
 +
 +=== 4.5. Если демон запускается и через некоторое время останавливается,​ и ещё нормально на этом сервере не работал. ===
 +== 4.5.1. Проверить,​ есть ли исходный файл с заданиями. Создать. ==
 +== 4.5.2. Проверить,​ разрешён ли доступ на запись ко всем папкам. Разрешить. ==
 +== 4.5.3. Проверить,​ используются ли для демона разрешённые порты (см. пункт 2.6.) ==
 +=== 4.6. Если демон запускается и через некоторое время останавливается,​ а раньше уже нормально работал. ===
 +== 4.6.1. Может кто-то ещё его остановил?​ ==
 +== 4.6.2. Может не хватило оперативной памяти и он заглючил - уменьшите число потоков. ==
 +== 4.6.3. Возможно встретилось задание,​ которое демон некорректно обрабатывает. ==
 +  - Выставите число потоков в 1
 +  - Зайдите в папку **<​папка_сайта>/​formcrawler/​jbs/​** Посмотрите наличие файлов. Это файлы заданий. Если файлов несколько - можно выяснить,​ какой именно вызывает ошибку.
 +  - Запустите демон. Если до остановки админка успевает написать номер задания в графе pos - этот номер нужно запомнить (например,​ по последним 3-4 цифрам).
 +  - Номер pos задания совпадает с началом имени файла задания. Если перенести его в другую папку и прислать нам - исправим обработку. Если удалить файл задания,​ вызывающего остановку демона,​ это временно решит проблему. Если до остановки демон не успел написать номер задания,​ можно предположить,​ что это это первое задание по порядку. Попробуйте поступить также с ним.
 +  - Снова запустите демон. Если пошло без остановок,​ выставите предпочтительное число потоков.
 +
 +//​Примечание 1.// Для ускорения идентификации задания,​ вызывающего глюк,
 +нужно выставлять число потоков,​ чуть меньшее числа файлов в каталоге с заданиями.
 +Как только число потоков и файлов сравняется,​ можно выставлять 1 поток.
 +
 +//​Примечание 2.// Подозрения должны в первую очередь падать на задания,​
 +в которых v=1, t=0. Попробуйте исключить их по одному.
 +
 +//​Примечание 3.// Папка с заданиями читается только при старте демона.
 +
 +=== 4.7. Демон запущен,​ но работы не выполняются. ===
 +  - Все работы завершены?​ 100%? Значит,​ работа завершена,​ и следует открыть файл отчёта - **<​папка_сайта>/​formcrawler/​res/​FormsFound.txt**
 +  - 0 потоков?​ Установите количество потоков,​ больше 0, и нажмите на **"​Set"​**
 +  - Возможно встретилось задание,​ которое обрабатывается некорректно. Обратитесь к разработчику,​ с указанием ссылки/​домена,​ кот. обрабатывается некорректно. Действуйте по инструкции 4.6.3.
 +
 +\\
 +|См. также: • [[Control.exe|Control.exe]] • [[Secure.exe|Secure.exe]] • [[Rgen.exe|Rgen.exe]] • [[Mgen.exe|Mgen.exe]] • [[xrumer_addin|]]|
Languages