Удобное расширение для генерации sitemap превышающих 50 000

Выкладываем свои наработки
Ответить
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Удобное расширение для генерации sitemap превышающих 50 000

Сообщение webplus »

Здравствуйте!
Давно еще когда не использовал фреймворк Yii2 написал удобный класс для генерации sitemap в формате xml.
Главная особенность это создание не ограниченного количества карт сайта если размер линков в карте превышает 49000 ., т.е. по стандарту гугла - то гугл принимает только карты не превышающие 50000 линков. Если к примеру у вас 150 000 линков, то с генерируется 3 карты сайта и одна индекс карта указывающая на эти три.

Я переделал свой класс под Yii2 и сделал удобное расширение.
Установить можно композером.
Вот ссылка на гитхаб с инструкцией https://github.com/borysenko/sitemap
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение zelenin »

https://github.com/samdark/sitemap
ну вот например от сэмдарка аналогичное расширение, но:
а) соблюдены стандарты psr
б) экономно работает с памятью
в) не склеивает xml руками из строки
г) готово к продакшну (есть релизы)
д) не наследует зачем-то Model

и вот еще поройтесь в сотнях библиотек https://github.com/search?l=PHP&q=sitem ... =%E2%9C%93
уверен найдете несколько десятков, обладающих вашим функционалом, но более качественным кодом.
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение Onotole »

zelenin писал(а):https://github.com/samdark/sitemap
ну вот например от сэмдарка аналогичное расширение, но:
а) соблюдены стандарты psr
б) экономно работает с памятью
в) не склеивает xml руками из строки
г) готово к продакшну (есть релизы)
д) не наследует зачем-то Model

и вот еще поройтесь в сотнях библиотек https://github.com/search?l=PHP&q=sitem ... =%E2%9C%93
уверен найдете несколько десятков, обладающих вашим функционалом, но более качественным кодом.
+
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение webplus »

zelenin писал(а): ну вот например от сэмдарка аналогичное расширение.
Могу ответить: я конечно не супер - гуру программист, но свое решение я сам писал, не используя чужой код. У меня на трех проектах оно успешно реализовано. На одном сайте по трудоустройству в котором 180 000 вакансий - карта сайта создается по крону каждую ночь успешно, с разбитием на несколько карт.

По сэмдарку, ну у него просто добавлять урлы надо так: $sitemap->addItem('http://example.com/mylink2', time()); И если надо с базы выводить например вакансии, то код будет примерно такой:

Код: Выделить всё

$model = Vacancy::find()->all();
foreach($model as $item){
    $sitemap->addItem($item->url, time());
}
А у меня этих циклов писать не надо, у меня так:

Код: Выделить всё

 $siteMap->addTable("http://www.example.com/news/%s-%d/","0.9", date("Y-m-d"),"daily", "news",array("translit","id"),"1=1");
из этого кода: news - это таблица для sql запроса, array("translit","id") - это данные которые надо в урл подставить, "1=1" - это условия sql запроса т.е. Where
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение zelenin »

webplus писал(а):
zelenin писал(а): ну вот например от сэмдарка аналогичное расширение.
Могу ответить: я конечно не супер - гуру программист, но свое решение я сам писал, не используя чужой код.
вы не поняли, что я до вас доносил?
вы безусловно молодец, что писали сами. Никто не сомневается. Только ценность библиотеки крайне низка, т.к. есть сотни конкурентов, а у вас ни одного плюса по сравнению с ними.
webplus писал(а):У меня на трех проектах оно успешно реализовано. На одном сайте по трудоустройству в котором 180 000 вакансий - карта сайта создается по крону каждую ночь успешно, с разбитием на несколько карт.
супер. У авторов тех сотен библиотек тоже где-то что-то генерится.
webplus писал(а):По сэмдарку, ну у него просто добавлять урлы надо так: $sitemap->addItem('http://example.com/mylink2', time()); И если надо с базы выводить например вакансии, то код будет примерно такой:

Код: Выделить всё

$model = Vacancy::find()->all();
foreach($model as $item){
    $sitemap->addItem($item->url, time());
}
А у меня этих циклов писать не надо, у меня так:

Код: Выделить всё

 $siteMap->addTable("http://www.example.com/news/%s-%d/","0.9", date("Y-m-d"),"daily", "news",array("translit","id"),"1=1");
из этого кода: news - это таблица для sql запроса, array("translit","id") - это данные которые надо в урл подставить, "1=1" - это условия sql запроса т.е. Where
офигеть фича. Вместо понятных трех строк вводим одну, но непонятную. Вместо произвольного источника данных - фиксированный, не предоставив даже интерфейсов для провайдера данных (поясню: нельзя использовать связи, джойнить таблицы, использовать другие кроме стандартного коннекшны (редис, монго, второе mysql-соединение, апи)). К слову выбрать все данные из таблицы - выстрелить себе в ногу, а другого вариант у вас нет.

Пишите либы:
а) покрывающие области, которые не покрыты уже существующими либами
б) обладающие уникальными фичами по сравнению с аналогами
в) имеющие другой подход к реализации фичи, чем аналоги (в т.ч. упрощение комбайна)

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

Не анонсируйте либы, уровня "я сделяль" - это никогда не вызовет позитива в комментариях.

PS eval, серьезно? https://github.com/borysenko/sitemap/bl ... ap.php#L52
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение webplus »

zelenin писал(а): PS eval, серьезно? https://github.com/borysenko/sitemap/bl ... ap.php#L52
Да я использовал eval - но наверно это не правильный был подход?
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение webplus »

zelenin писал(а):https://github.com/samdark/sitemap
ну вот например, от сэмдарка аналогичное расширение
Изучив те решения, что дали вы, например сэмдарка, так в нем для создание нескольких карт в каждой из которых должно быть по 50000 линков - эти карты нужно прописывать в скрипте и для каждой прописанной такой карте необходимо самому просчитать, если превысит цикл вывода линков 50000, то создавать новую карту. - Как мне ,кажется, это не очень удобно.

У меня реализовано так:
Мы добавляем шаблоны линков в месте с таблицей и условием для sql запроса, и при записи в файл линков если их количество достигло 49000 то создается новый-дополнительный файл sitemap
И это был самый главный приоритет при написании своего решения, чтобы карты создавались сами в каждой из которых было 49000 линков, и писать в скрипте ничего не нужно было, кроме шаблонов линка и таблицы бд с условием
И еще join-ы можно добавлять, например:

Код: Выделить всё

$siteMap->addTable("http://www.example.com/news/%s-%d/","0.9", date("Y-m-d"),"daily", "news n LEFT JOIN author a ON a.id=n.author_id",array("n.translit","n.id"),"1=1");
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение zelenin »

webplus писал(а):
zelenin писал(а):https://github.com/samdark/sitemap
ну вот например, от сэмдарка аналогичное расширение
Изучив те решения, что дали вы, например сэмдарка, так в нем для создание нескольких карт в каждой из которых должно быть по 50000 линков - эти карты нужно прописывать в скрипте и для каждой прописанной такой карте необходимо самому просчитать, если превысит цикл вывода линков 50000, то создавать новую карту. - Как мне ,кажется, это не очень удобно.
я вижу что там все есть. при достижении 50000 создается новый файл.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение maleks »

webplus писал(а): Да я использовал eval - но наверно это не правильный был подход?
Неправильный. Есть call_user_func_array.
Yii2 universal module sceleton - for basic and advanced templates
historian
Сообщения: 2
Зарегистрирован: 2018.01.24, 10:12

Re: Удобное расширение для генерации sitemap превышающих 50 000

Сообщение historian »

zelenin писал(а): 2016.12.09, 19:53 https://github.com/samdark/sitemap
ну вот например от сэмдарка аналогичное расширение, но:
а) соблюдены стандарты psr
б) экономно работает с памятью
в) не склеивает xml руками из строки
г) готово к продакшну (есть релизы)
д) не наследует зачем-то Model

и вот еще поройтесь в сотнях библиотек https://github.com/search?l=PHP&q=sitem ... =%E2%9C%93
уверен найдете несколько десятков, обладающих вашим функционалом, но более качественным кодом.


ерунда это, а не расширение. Ничего толком не объяснено, куда вставлять, что делать....
Ответить