Как сделать "вечный скрипт"?

Поддержка
  • Здравствуйте. С BAS не скажу что очень прям хорошо знаком, но написал уже несколько довольно сложных парсеров, а сейчас вот затык.. Поискал по форуму, ответа на свой вопрос не нашел, поэтому извиняюсь если такое уже спрашивали. Суть в том, что мне надо парсить один сайт, и у меня в текстовом файле есть список id для парсинга, а сам парсер работает по такой логике:

    1. В многопоточном режиме захожу на сайт, получаю куки
    2. Начинаю парсить в while(true). Для этого беру значение из ресурса только один раз для каждого потока {{list_id|notreuse}}
    3. Далее данные отправляются моему скрипту на php (мне проще на нам было реализовать функционал)
    4. Отслеживаю количество id в ресурсе и если еще есть, то поток переходит к новому id
    5. Если количество равно 0, то на php-скрипт отправляется запрос ENDWORK и скрипт формирует отчет

    Проблема в том, что после того как все ID пройдены, мне нужно чтоб парсер сам перезапустился и начал заново все опять собирать. Пробовал перезагружать ресурс если оставшееся количество в нем равно 0, но другие потоки уже завершают свою работу, и остается работать только один, тот который перезагрузил ресурс. Иногда бывает что несколько, если 0 пршелся на поток который завершился ранее, чем еще работающие. Вопрос, как после перезагрузки ресурса перезагрузить сами потоки? Или может как-то проще можно такую задачу реализовать? Буду очень благодарен за помощь, бьюсь с этой проблемой третий день..

  • у чата жпт не спрашивал? вот чо он мне написал, хз правильно не, вполне возможно что нет)))

  • @basuser123 Спасибо за помощь, но выполнение js-скрипта выдает ошибку "Поток №1 : ReferenceError: BAS_restart is not defined", и про функцию BAS_restart() нет ничего ни в гугле, ни тут по поиску на форуме

  • @FedorFaust Боюсь, что это был просто стёб... Сам по себе чатгпт не состоянии понять какую чушь он пишет...

  • @LUN Ну если и стёб, то и на том спасибо) В принципе мне такая функция как BAS_restart() в ответе gpt и нужна, только вот не могу про такое найти..

  • @FedorFaust Самое простое это запускать 1 поток, а в нем использовать запуск функции в несколько потоков и это в цикл, в конце каждого цикла перезагружаете ресурс

  • @UserTrue спасибо! Оказывается многопоточность можно реализовывать по разному)

  • @FedorFaust Вечного ничего не бывает. После забивки папки с кешем, комп напросто зависнет.
    На счёт окончания работы: нет ничего сложного сбросить переменные и вернуться к началу скрипта.

  • @gurkin4 said in Как сделать "вечный скрипт"?:

    @FedorFaust Вечного ничего не бывает. После забивки папки с кешем, комп напросто зависнет.
    На счёт окончания работы: нет ничего сложного сбросить переменные и вернуться к началу скрипта.

    Что там у вас забивает? У меня скрипты по неделе работают, ничего не забивается.

  • This post is deleted!
  • @gurkin4 said in Как сделать "вечный скрипт"?:

    @UserTrue Вечный? Даже комп имеет свой срок жизни!
    По неделе! Ха, я уже около года кручу, перегружал только для обновления ОС, но это далеко не вечность!

    Понятно , опять ценные 5 копеек