Не удалось повторить вашу проблему:
image.png
Она ещё актуальна? Если да, прикрепите тестовый проект, в которм повторяется эта ошибка. Или напишите на каком сайте и с какими настройками действия получения кода используется проект.
Как программно отключить поток?
Как программно включить поток?
Можете написать пример использования?
Насколько я понимаю действие завершить поток просто закрывает текущий поток и не дает ему перезапускаться?
Необходимо спросить у веб сервера, сколько необходимо потоков для задач определенного кол-ва ботов на момент запуска скрипта.
Пока это возможно только редактируя код скрипта. Создав еще одну секцию, в которой совершать запрос к серверу и устанавливать результат в глобальную переменную.
Но в конструкторе это работать не будет
Когда наступает ситуация что работают 30 потоков и 20 штук в ожидании, не очень хорошо сказывается на производительности, было бы замечательно вырубить эти 20, и по необходимости подключать.
Основной удар по производительности в этом случае идет из-за браузера. Возможно действие закрыть браузер/откріть браузер решит проблему?
@support хм... закрывать браузер, а это отличная идея. Потоки без браузера действительно меньше требуют ресурсов железа. Спасибо.
@support said in Вопрос по работе с потоками:
Можете написать пример использования?
По поводу примера использования вкл/выкл потока.
Например: в базе на данный моммент есть задания для 20 потоков, запуская скрипт у нас по умолчанию запускается 30 потоков, каждый поток берет себе по 1 заданию и работает с ним, те кому не досталось находяться в ожидании и было бы круто для них вызвать что, то типо thread_close('лог: Мало заданий, поток завершен')!
В ситуации же, если есть 100 заданий, а запущено по дефолту 30 потоков. Как только последний поток берет себе 30-ое задание, можно проверить что это последний поток и что есть еще задания, и потоков не хватает - добавить в работу еще 20 или все 70 потоков(в зависимости от мощности железа).Запускаясь каждый новый поток будет брать себе по заданию и т.д и т.п
Идея в том, что бы динамически регулировать кол-во потоков по нуждам скрипта. Надо больше потоков? будет. Слишком много? Можно и уменьшить
@UlybnisJe Предлагаю такой вариант решения проблемы:
Сразу создаем макс количество потоков, но без браузера(эту возможность я обеспечу).
В цикле берем разные задания и выполняем.
Если за определенное количество раз задание получить не удалось(мало заданий в базе) - удаляем браузер до лучших времен.
Если задания в базе снова появились - создаем браузер снова.
Как вам?
@support said in Вопрос по работе с потоками:
разу создаем макс количество потоков, но без браузера(эту возможность я обеспечу).
Я так понял это просто удалить 1 строку из initialize?
section_start("Initialize", 0)!
-> ЭТУ browser()!
section_end()!
@support а реально ли вообще сделать такую штуку как настоящий браузер? Я имею ввиду, что запускаешь скрипт, он допустим авторизовывается и дает управление в твои руки, и ты пользуешься браузером как обычным хромом.
В некоторых ситуациях это было бы очень даже кстати.
Переключение на ручное управление помогло бы вот с этим http://prnt.sc/cwnwsp
@UlybnisJe В новой версии доступны 2 новых действия Открыть браузер и Закрыть браузер. Если хотя бы одно из них использовано - это значит, что разработчик управляет жизнью браузера самостоятельно. Перед загрузкой любой страницы браузер нужно открыть, тогда, когда нужно сохранить память его можно закрыть.