metrpro 42 Жалоба Опубликовано: January 13, 2020 Добрый день! Есть сайт, на котором объявления размещаются двумя способами: вручную (частники и риэлторы) пакетно (агентства недвижимости и девелоперы). И тех, и других множество. Но возникает проблема при обновлении объявлений, загруженных ранее пакетным способом через парсер фидов формата Я.Н - он умеет только загружать объявления, но не умеет их синхронизировать. В результате новые объявления, которые появились в конкретном фиде, будут добавлены в базу, а те объявления, что были из фида удалены, из базы данных нашего сайта никуда не исчезнут. Конечно, разработчики sitebill предусмотрели опцию "Удалять после парсинга записи, которых нет в файле XML (apps.yandexrealty_parser.delete_old_records)". Однако, если произвести парсинг с этой включенной опцией, то будут удалены все объявления, добавленные ручками, и все объявления, ранее добавленные из других фидов (т.е. один фид просто выживет все другие). Проверка на то, что удалять отсутствующие в фиде объявления нужно только у пользователя, загружающего фид, системой в настоящее время не осуществляется. Также нет запрета на удаление тех объявлений, что были добавлены вручную. Может, я чего-то не понимаю и есть в движке какая-то опция, которая снимет все проблемы, а я спокойно выставлю все фиды на автоматическую синхронизацию через cron и буду спать спокойно? Прошу помощи! Спасибо за внимание! PS: Я полтора года назад не подумав залил фид с выставленной опцией apps.yandexrealty_parser.delete_old_records - в результате были удалены около 20К объявлений (а я стал на несколько кирпичей богаче). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vihr 5 Жалоба Опубликовано: January 13, 2020 7 часов назад, metrpro сказал: Добрый день! Есть сайт, на котором объявления размещаются двумя способами: вручную (частники и риэлторы) пакетно (агентства недвижимости и девелоперы). И тех, и других множество. Но возникает проблема при обновлении объявлений, загруженных ранее пакетным способом через парсер фидов формата Я.Н - он умеет только загружать объявления, но не умеет их синхронизировать. В результате новые объявления, которые появились в конкретном фиде, будут добавлены в базу, а те объявления, что были из фида удалены, из базы данных нашего сайта никуда не исчезнут. Конечно, разработчики sitebill предусмотрели опцию "Удалять после парсинга записи, которых нет в файле XML (apps.yandexrealty_parser.delete_old_records)". Однако, если произвести парсинг с этой включенной опцией, то будут удалены все объявления, добавленные ручками, и все объявления, ранее добавленные из других фидов (т.е. один фид просто выживет все другие). Проверка на то, что удалять отсутствующие в фиде объявления нужно только у пользователя, загружающего фид, системой в настоящее время не осуществляется. Также нет запрета на удаление тех объявлений, что были добавлены вручную. Может, я чего-то не понимаю и есть в движке какая-то опция, которая снимет все проблемы, а я спокойно выставлю все фиды на автоматическую синхронизацию через cron и буду спать спокойно? Прошу помощи! Спасибо за внимание! PS: Я полтора года назад не подумав залил фид с выставленной опцией apps.yandexrealty_parser.delete_old_records - в результате были удалены около 20К объявлений (а я стал на несколько кирпичей богаче). Я изменял модуль, добавлял еще поле в дату import_feed_id Пишем туда данные о источнике -фиде. После отработки импорта деактивируем то что не апдейтнулось. Через пару дней сносим эти объекты, чтобы не было проблем если неудачный импорт произошел. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
metrpro 42 Жалоба Опубликовано: January 14, 2020 15 часов назад, vihr сказал: Я изменял модуль, добавлял еще поле в дату import_feed_id Пишем туда данные о источнике -фиде. А логика действий какая? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vihr 5 Жалоба Опубликовано: January 14, 2020 Тебе надо понять из какого конкретно источника данный объект чтобы понять стоит ли его удалять. У меня чуть больше 1500источников - фидов Можешь канечно упростить и сделать Update re_data set active=0 where active=0 and url>'' and date_edit<'два дня назад' Если у тя каждый день фиды апдейтятся Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: January 14, 2020 В 13.01.2020 в 14:26, metrpro сказал: Может, я чего-то не понимаю и есть в движке какая-то опция, которая снимет все проблемы, а я спокойно выставлю все фиды на автоматическую синхронизацию через cron и буду спать спокойно? Удаление при каждом запуске парсера при включенной опции удалять старые выполняет такой запрос на получение кандидатов на удаление $query = "SELECT id FROM " . DB_PREFIX . "_" . $this->table_name . " where xml_source_id=" . $xml_source_id; Затем определяются ИД, которые есть в фиде - и они не удаляются. А те что остались, удаляются. Тут есть опция xml_source_id - т.е. при добавлении источников ему дается ИД. И удаление будет выполняться только для этого источника. Все остальные, в том числе добавленные вручную не входят в это условие. Проверьте, есть ли у вас xml_source_id у объектов из фидов и разные ли они для каждого фида? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
metrpro 42 Жалоба Опубликовано: January 15, 2020 5 часов назад, rumantic сказал: Проверьте, есть ли у вас xml_source_id у объектов из фидов и разные ли они для каждого фида? В какой таблице должно стоять это поле? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: January 15, 2020 В таблице data. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: January 17, 2020 В 15.01.2020 в 04:42, rumantic сказал: Удаление при каждом запуске парсера при включенной опции удалять старые выполняет такой запрос на получение кандидатов на удаление $query = "SELECT id FROM " . DB_PREFIX . "_" . $this->table_name . " where xml_source_id=" . $xml_source_id; Затем определяются ИД, которые есть в фиде - и они не удаляются. А те что остались, удаляются. Тут есть опция xml_source_id - т.е. при добавлении источников ему дается ИД. И удаление будет выполняться только для этого источника. Все остальные, в том числе добавленные вручную не входят в это условие. Проверьте, есть ли у вас xml_source_id у объектов из фидов и разные ли они для каждого фида? не лучше ли при загрузке фида проводить сравнение? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: January 17, 2020 В 13.01.2020 в 10:26, metrpro сказал: Добрый день! Есть сайт, на котором объявления размещаются двумя способами: вручную (частники и риэлторы) пакетно (агентства недвижимости и девелоперы). И тех, и других множество. Но возникает проблема при обновлении объявлений, загруженных ранее пакетным способом через парсер фидов формата Я.Н - он умеет только загружать объявления, но не умеет их синхронизировать. В результате новые объявления, которые появились в конкретном фиде, будут добавлены в базу, а те объявления, что были из фида удалены, из базы данных нашего сайта никуда не исчезнут. Конечно, разработчики sitebill предусмотрели опцию "Удалять после парсинга записи, которых нет в файле XML (apps.yandexrealty_parser.delete_old_records)". Однако, если произвести парсинг с этой включенной опцией, то будут удалены все объявления, добавленные ручками, и все объявления, ранее добавленные из других фидов (т.е. один фид просто выживет все другие). Проверка на то, что удалять отсутствующие в фиде объявления нужно только у пользователя, загружающего фид, системой в настоящее время не осуществляется. Также нет запрета на удаление тех объявлений, что были добавлены вручную. Может, я чего-то не понимаю и есть в движке какая-то опция, которая снимет все проблемы, а я спокойно выставлю все фиды на автоматическую синхронизацию через cron и буду спать спокойно? Прошу помощи! Спасибо за внимание! PS: Я полтора года назад не подумав залил фид с выставленной опцией apps.yandexrealty_parser.delete_old_records - в результате были удалены около 20К объявлений (а я стал на несколько кирпичей богаче). могли бы описать более подробно всю механику и весь механизм импорта, сравнения, удаления и тд Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ReatEstate 13 Жалоба Опубликовано: July 13, 2020 Можно вызывать ФИД на определенного пользователя? Например имеются на нашем сайте 10 юзеров. Нам нужно вызвать яндекс ФИД c объявлениями, только например на юзера с "id=5" Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: July 14, 2020 12 часа назад, ReatEstate сказал: Можно вызывать ФИД на определенного пользователя? Например имеются на нашем сайте 10 юзеров. Нам нужно вызвать яндекс ФИД c объявлениями, только например на юзера с "id=5" Да, смотрите раздел Персональные фиды https://wiki.sitebill.ru/index.php?title=Приложение_"Выгрузка_Yandex.Realty" Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
metrpro 42 Жалоба Опубликовано: December 21, 2020 В 15.01.2020 в 02:42, Дмитрий Кондин сказал: Удаление при каждом запуске парсера при включенной опции удалять старые выполняет такой запрос на получение кандидатов на удаление $query = "SELECT id FROM " . DB_PREFIX . "_" . $this->table_name . " where xml_source_id=" . $xml_source_id; Затем определяются ИД, которые есть в фиде - и они не удаляются. А те что остались, удаляются. Тут есть опция xml_source_id - т.е. при добавлении источников ему дается ИД. И удаление будет выполняться только для этого источника. Все остальные, в том числе добавленные вручную не входят в это условие. Проверьте, есть ли у вас xml_source_id у объектов из фидов и разные ли они для каждого фида? Дошли руки )) Есть, разный для разных фидов Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах