Проект. Нужны советы

Innocent77

Создатель
Регистрация
20 Дек 2009
Сообщения
22
Реакции
6
Пишу простенький дорген на основе парсинга выдачи. Есть админ часть, которую уже написал. Админка простая, в качестве хранения парметров использую .ini файл. Не скажу, что очень удобно, потому как сложно пересохранять отдельные данные в .ini. Поэтому приходится снова считывать .ini и переписывать файл с новыми данными полученными из формы. Есть более простой и рациональный способ?
Архитектура Админ части

-admin
--index.html(Форма авторизации в админку, после удачного входа header location отправляет в /main/)
--check.php(Проверка данных отправляемых с index.html, в этом файле инклудится класс проверки логина, пароля, и функция очистки данных от тегов и т.п.)
--main
---index.php(две формы)
---main_forms.php(здесь функция обработка, исходя из какой формы пришли данные провожу с ними деяствия, далее header location обратно в /main/)
--proxy
---index.php(принцип такой же как и на main)
---proxy_forms.php
--theme(стили админки и т.п.)
Оно работает, но как то это все примитивно и не по короткому пути.
Подскажите как более умно обрабатывать данные формы и запись .ini? Общий класс? Если класс написать, то использовать static? Бд использовать не хочу.

Сама генерация
Был написан класс с использованием мульти курл с прокси/без, скармливаешь ему массив ссылок - на выходе получаешь страницы. И было это не очень удобно. Потому как, чтобы спарсить несколько пс, нужно было делать след манипуляции:
PHP:
# Формируем массивы ссылок в цикле исходя из keys
    $bing[] = 'http://www.bing.com/'.urlencode($keys[$marker]);
                $ya[]="dsfdsf";
                $go[] = "dsfsdf";
# Потом я создавал объект класса
$_bing = $Amc->Request($bing);
foreach($_bing as $b){
    $snipBing[] = snippetBing($b['content']);
}

$_ya = $Amc->Request($km);
foreach($_km as $k){
    $snipya[] = snippetya($k['content']);
}

$_go = $Amc->Request($go);
foreach($_go as $ud){
    $snipgo[] = snippetgo($ud['content']);
}
где snippetBing и подобное это функции парсинга сниппета. Дальше по меткам из шаблона заменял в цикле данные.
Сейчас хочу реализовать парсинг картинок, видео. Как лучше сделать? Мб удобнее будет формировать многомерный массив? И в цикле подставлять в мулти курл одномерный?

Как лучше всего реализовать рандомный выбор парсинга пс? Чтобы при нахождении в шаблоне нескольких меток {snippet} парсился сниппет с разных пс?

Проясните пожалуйста эти моменты. Логику что куда, необходимые данные и т.п..
Спасибо.
 
Аналогичную пишу систему на Для просмотра ссылки Войди или Зарегистрируйся
БД используется sqlite. Сначала начал с админки, и понял что правильнее начать с фронта. Система получается довольно интересной. Скорость генерации страницы (без парсинга, уже готовый контент) на моем ноуте около 0,08 сек. При этом кеширование не используется, в БД одних только сниппетов 200.000, постов 10.000, категорий 1.000. Есть встроенный в фреймворк шаблонизатор, ну очень удобный, простой и очень гибкий.
 
Никогда не имел дела с фреймфорками. Посмотрел на гитхабе, есть несколько интересных фишек, русской документации нет? или примеров использования? Шаблонизатор - да удобный. Смущает латиница. Спасибо за ответ. На счет парсинга, рандомного выбора пс не подскажешь?
 
Вот сайт с документацией Для просмотра ссылки Войди или Зарегистрируйся
Рандомный на одной странице лучше не реализовывать, поскольку будет повышенная нагрузка + длительное время парсинга.
Вообще я планирую сделать асинхронный парсинг, без крона. А там можно уже в один и тот-же контент допарсивать сниппеты из рандомной ПС.
 
Вот сайт с документацией Для просмотра ссылки Войди или Зарегистрируйся
Рандомный на одной странице лучше не реализовывать, поскольку будет повышенная нагрузка + длительное время парсинга.
Вообще я планирую сделать асинхронный парсинг, без крона. А там можно уже в один и тот-же контент допарсивать сниппеты из рандомной ПС.
Посмотрел посты на хабре. Пока практического применения не вижу, если только использовать в админке. Но смысл использовать в админке если там всего 4 index.php и 4 обработчика.
Асинхронный парсинг - хм, любопытно. Только не понял в смысле без крона? Поставил задание он сделал кучу пустых страниц, и через определенный период обработчик обходит их и докидывает контент? Или у тебя все данные хранятся в бд? Сделал дор на 10к страниц, на шареде еще 30 таких же, и все умер хостинг.
Я за статику. Т.е. нужно прямолинейно - сразу спарсил - создал - очистил память - сразу спарсил и т.д. Только вот как бы реализовать просто, быстро и расширяемо.
Silex не пробовал? похож на f3.
 
Мне изначально f3 понравился из-за его роутинга и нативной поддержки sqlite. Да у меня все данные хранятся в БД. При указанных мной параметрах БД весит около 0,5 ГБ. Забыл сказать, что система мультидоменная и имеет отложенную публикацию.
Идея асинхронного парсинга состоит в том что-бы парсинг был автоматическим и начинался только если на сайт зашел бот и пользователь. Но происходил бы сам парсинг в фоновом режиме. Из плюсов: нет надобности настраивать для каждого домена крон + можно на уровне ядра отслеживать одновременный парсинг несколькими доменами одной и той же ПС (т.е. избегать бана IP, + балансировка нагрузки на сервер, т.е. отсутствие кучи одновременных запросов на парсинг).
 
Как отложенную публикацию реализовал?
 
В БД добавил поле date, и выборку делаю по сегодняшнюю дату.
 
В принципе неплохая реализация с бд. Со всеми вытекающими плюсами. + Шаблонизация. Вот только сильная нагрузка будет, если по 5к-6к страниц фигарить на дор? Ты одну единую базу используешь? Или один дор - одна база.
 
Один дор - одна база. + Отдельная база под парсинг с последующей синхронизацией с основной 1 раз в сутки (в sqlite быстрое чтение, но медленная запись).
А выборка там очень быстрая, особенно если индексы правильно проставить.
 
Назад
Сверху