Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1 2

Авто создание sitemap

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#1
Решил наконец сделать сие чудо в Fapos CMS. Скрипт уже готов. Но есть несколько вопросов, над которыми я бьюсь и не могу придумать как лучше. Скрипт работает через HTTP, что бы в карту попадало только то что может увидеть поисковый робот. По этому скан сайта происходит со скоростью примерно 100страниц в минуту. На больших сайтах это может затянуться на долго. В виду этого, надо придумать способ запуска этого скрипта.

Я думал может через какие-то интервалы делать ссылку на не сущуствующее изображение. Таким образом мы будем запускать отдельный поток, не влияющий на страницу где в данный момент находится пользователь. И вот, даже не картинку грузить, а просто аяксом делать ГЕТ запрос. То есть будет так:

Пользователь загружает страницу
Идет проверка, пора ли обновлять карту
Если надо, делается ГЕТ запрос
Пользователь ничего этого не видит конечно
После того, как запрос послан, пользователь может хоть закрывать браузер - пофиг. Так как в скрипте будет стоять ignor_user_abort();

К стати, для работы этого скрипта нужны такие функции как set_time_limit() и ignor_user_abort(). На дешевых хостингах и уж тем более шаровых это использовать нельзя.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#2
А зачем сканить сайт? У нас под рукой ВСЕ базы данных, в которых отмечено что и когда обновлялось. Sitemap элементарно можно генерировать путем выборки из БД.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#3
Wasja пишет:
А зачем сканить сайт? У нас под рукой ВСЕ базы данных, в которых отмечено что и когда обновлялось. Sitemap элементарно можно генерировать путем выборки из БД.
тогда при внесении изменений в структуру БД, надо править скрипт карты сайта. + плюс надо сканить права что бы знать куда поисковый робот сможет попасть а куде нет. А так очень просто. Скрипт живет отдельной жизнью. Меняешь что хочешь, ставь любые права, а он все равно отсканит все что найдет и только то что может увидеть поисковый робот.

Добавлено2011.06.16 16-36

бля... Все больше склоняюсь к варианту о котором заговорил Wasja. Он хоть и прибавляет проблем, но в тоже время и избавляет от многих. %)

Отредактировано автором 16 Июн 2011
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#4
Drunya пишет:
тогда при внесении изменений в структуру БД, надо править скрипт карты сайта.
Да ладно, объявляешь во всех модулях функцию, возвращающую список материалов, а в скрипте опрашиваешь все модули - в зависимости от их назначения либо возвращают данные (форум, новости, стратьи и т.п.), либо нет (поиск, чат и т.п.). Изменил таблицу в БД для форума - подправил функцию в модуле и все продолжает работать.
Drunya пишет:
Все больше склоняюсь к варианту о котором заговорил Wasja.
А то ж. :|

Добавлено2011.06.16 17-46

А обновление вообще проводится тогда элементарно - делается модуль "sitemap", при его вызове проверяется дата последнего кеширования, если данные устарели - делается выборка из БД по всем модулям, результат отдается роботу.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#5
Wasja пишет:
А обновление вообще проводится тогда элементарно - делается модуль "sitemap", при его вызове проверяется дата последнего кеширования, если данные устарели - делается выборка из БД по всем модулям, результат отдается роботу.
то есть если данные устарели, робот ждет пока они обновятся? Не хорошо заставлять ждать многоуважаемого робота)

Wasja пишет:
Да ладно, объявляешь во всех модулях функцию, возвращающую список материалов, а в скрипте опрашиваешь все модули - в зависимости от их назначения либо возвращают данные (форум, новости, стратьи и т.п.), либо нет (поиск, чат и т.п.). Изменил таблицу в БД для форума - подправил функцию в модуле и все продолжает работать.
Ну так а какая разница? Обновлять функции в модулях или в классе который генерирует карту сайта? В общем, ладно. Вся работа идет через один суперкласс(почему супер? Мне он очень нравится), так что если что то я могу в нем уже разруливать к какой таблице идет обращение. К тому же я больше волновался не за то что я изменю названия таблиц, а за то что я изменю типы или названия полей. Вот тогда то и начнутся траблы. Но дело в том, что тогда мне придется столько менять, что пара лишних изменений в скрипте генератора карты мне погоду не сделают.

В общем вот. Кидаем в корень и запускаем. Предварительно надо создать в корне файл sitemap.xml
http://fapos.net/testsitemap.rar

Добавлено2011.06.16 19-28

Если кто-то не понял, то я даю потестить скриптец, перед внедрением в Fapos CMS - самую гуманную CMS в мире :|

Отредактировано автором 16 Июн 2011
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#6
А что сложно в его реализации? Особенно, если реализовано включение/отключение модулей.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#7
skad0, уже все готово.

Теперь надо придумать как сделать имитацию крона на PHP

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Ater

  • Атом-мозг
  • Юзер
  • 750
  • Репутация:15 
  • Предупреждения: 0 
  • Регистрация:
    17 Авг 2010
#8
Drunya пишет:
то есть если данные устарели, робот ждет пока они обновятся?
никакой бот не будет ждать карту сайта... карта нужна только в помощи индексации.

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

ну как то вот так...

Все мое имхо...
------
Не флуди и не да зафлудим будешь!

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#9
Drunya пишет:
то есть если данные устарели, робот ждет пока они обновятся? Не хорошо заставлять ждать многоуважаемого робота)
Я говорил про выборку из БД, а не про метод сканирования.
Ater пишет:
никакой бот не будет ждать карту сайта... карта нужна только в помощи индексации.
А что, sitemap люди просматривают? Везде боты ползают. :)
Ater пишет:
в админке назначать какие модули, категории, разделы, форумы, подворумы попадают в карту сайта, а какие вообще закрыты от индексации.
Если материал отсуствует в сайтмепе - это не гарантия того, что он не будет проиндексирован. Только прямой запрет в robots.txt (и то по слухам некоторые поисковики его игнорят).
Ater пишет:
при добавлении материалов можно внести галочку - закрыть от индексации, соответственно в карту сайта так же не попадет.
Первая ссылка на эту страницу в любом месте интернета - и он в индексе. Да и вообще идея с галочкой перебор.
Ater пишет:
по идее в карту должен тогда попадать любой вновь созданный материал, либо тот который изменили. думаю не очень сложно что то там дергать для этого.
В карте должны лежать все доступные материалы, дополненные информацией о времени их обновления.

Ater

  • Атом-мозг
  • Юзер
  • 750
  • Репутация:15 
  • Предупреждения: 0 
  • Регистрация:
    17 Авг 2010
#10
прочитав все выше сказанное получается:
карту проще всего фигарить по базе, в карту должен попадать весь материал кроме того что закрыт от пользователей (галочка доступен для просмотра)


а все остальное шелуха... и сканить по HTTP не стоит...

Все мое имхо...
------
Не флуди и не да зафлудим будешь!
1 2
Сейчас online: 31. Зарегистрированных: 1. Гостей: 30.