Как в конце каждого потока проверять "Результаты" на дубли, чтобы во время парсинга гугла в окне "Результаты" строки всегда были без повторов?



  • Как в конце каждого потока проверять "Результаты" на дубли, чтобы ВО ВРЕМЯ парсинга гугла в окне "Результаты" строки всегда были без повторов? То есть нажимаешь в любой момент "Остановить скрипт мгновенно" и в "Результаты" только уникальные строки остаются.



  • @Revers
    есть экшен список>удалить дубли
    если у тебя есть многопоточная функция
    в main выведи очистку дублей чтобы каждый поток не теребил файл
    после того как потоки отработали и накидали ссылок/контент
    взял в список файл, дубли удалил, выгрузил/заменил в результный файл
    профит



  • @Revers Если тебе нужно именно окно "результат", то ни как. Это своеобразный лог, со своим файлом. Самый простой вариант, это сохранять отдельным файлом для каждого потока свои результаты. Они всегда будут уникальны и актуальны. А смотреть их можно через что угодно. Я например в админке смотрю на php.



  • @Fox То есть если выводить в результат alt text , то будут дубли?

    А если сохранять сразу в файл alt text, то проверка, при сохранении на дубли , будет проходить на автомате при многопоточном парсинге?



  • @Revers Какие именно данные ты хочешь видеть и для чего они тебе нужны? Количество спарсенных ссылок или сами ссылки, чтобы с ними работать?

    То есть нажимаешь в любой момент "остановить скрипт мгновенно"

    Если ты останавливаешь скрипт своими руками, то данные могут не записаться.

    Я вообще сохранял данные в [[THREAD_INDEX]].txt, где THREAD_INDEX это номер потока. Каждый поток работал со своим файлом, а в админке я выводил уже все файлы вместе. Дублей при таком подходе не будет.



  • @Fox К примеру за день в "Результаты" набралось 6 лямов ссылок, иду в KeyWordKeeper и остаётся только 300к. А если я раз в неделю буду проверть на дубли то KeyWordKeeper не потянет такой файл. Вот мне и нужно как-то решить проблему, чтобы не нажимая "Остановить", в окне "Результаты" или в файле links.txt были только уник строки.



  • @Revers Во сколько потоков работает скрипт? Можно по разному сделать, в зависимости от условий работы скрипта. Например отдельной функцией читать файл links.txt и удалить дубликаты. Либо перед добавлением в файл проверить, есть ли такая ссылка в файле, если нет, то добавить. С большими объёмами данных лучше работать в базе.
    Если эти ссылки будет потом использовать другой скрипт, можно его настроить использовать эту же базу и работать сразу, одновременно.



  • @Revers замените результат на ресурс, с галочкой только запись. Добавьте раз в определенное время очистку дублей, например, в скрипте можно получить количество успехов на данный момент, сделать в скрипте условие if, если количество успехов кратно 100 (переменная с количеством успехов % 100 == 0), то получать расположение ресурса, куда пишем результаты, читать файл в список, удалить дубли, записать список в файл с перезаписью (в экшене записи в файл не ставить галочку дописывать файл). Так же что бы не нагружать оперативку при добавлении результата в ресурс ставим галочки только добавить в файл/базу, а для того что бы результаты добавлялись в лайве, ставим галочку добавить в файл/базу мгновенно



  • @Fox Каким образом проверять наличие в файле сохраняемой ссылки ?



  • @Revers с вашим объемом данных это будет ресурсоемко - нужно будет прочитать файл в список и проверить​ существование строки в списке.
    П.с. небольшое примечание к моему способу выше - после того, как перезапишите файл, очистите переменную, в которую вы читали файл, это можно сделать действием установить переменную, например​ в значение 0, или выполнить код delete VAR_имя_переменной



  • @Revers Экшен Читать файл links.txt, содержит (список), If ![[LIST_CONTAINS]] то сохранить результат в файл, с галочками добавить символ окончания строки и дописывать файл.



  • Ok. Буду тестить.



  • @DrPrime Как обстоят дела с ютубом? Там при входе нет хэша(да, я смотрел то 5 часовое видео)?



  • @Revers Я согласен с @DrPrime каждую найденную ссылку сравнивать со всем списком очень ресурсоёмкий процесс. А вот периодическая очистка от дублей конечного результата будет оптимальным вариантом.



  • @Revers еще не смотрел



  • Как правильно записывать в файл?, чтобы не возникало [02:55:55] Поток №1 : Все данные были обработаны для links



  • @Revers получать расположение ресурса, куда пишем результаты, и с этим адресом работать в с файловой системой



  • @Revers
    Как вариант, можно писать все значения, выводимые в результат, в базу. Перед каждым выводом проверять наличие значения в базе довольно легко.


Log in to reply