У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
Вопрос по потокам.
-
слишком большой проект выходит, советую разбить на несколько ботов, по функциям) а так можно присвоить каждой функции номера потоков с которыми они будут работать. Например функция 1 работает с потоками 1,4,7, функция 2 - 2,5,8, функция 3 - 3,6,9 и тд. в начале скрипта получать номер потока и запускать нужную функцию через switch.
-
@artihorror switch? что-то не наблюдал, не подскажете где это оно?
-
This post is deleted!
-
This post is deleted!
-
@artihorror но ведь в таком случае если выбрать к примеру: 5 потоков а сайтов 8, выполняться только 5 сайтов а 3 проигнорирует! Подскажите пожалуйста как то можно реализовать что бы если выбрать 5 потоков, он выполнит сначала 5 а потом еще 3!?
-
@ROMEOinLOVE если сайты в списке, то выполнит сначала 5 а потом еще 3. но чтоб все 8 сайтов прогнались по всем функциям.. гемор с логикой. расхерачиваешь на 3 бота и включаешь все 3, и каждый сайт из списка пробегает по всем 3 функциям. если нужен совсем феншуй, то пиши простенький батник, который запустит всех 3 ботов хоть в каком порядке хоть с какими интервалами времени. Если уж прям горит все в 1 запихать, то давай больше инфы а лучше сразу проект, все равно он тут никому не нужен кроме как поправить)
-
@artihorror Все понятно! Спасибо огромное! У меня сайты в список идут, я просто думал что выполнит 5, а 3 проигнорит!
-
@ROMEOinLOVE я беру из ресурса (используя нотреус) , прогоняет все, независимо от кол-ва потоков.
-
@denanotherday В настройках ресурса кол-во успехов 1 поставьте, в настройках скрипта успехов столько, сколько хотите отработать строк из ресурса.
-
@artihorror подскажите пожалуйста вот такой момент: а если я сделаю загрузку сайта внутри функции, как мне сделать так что бы если выбран 1-н поток , он вызвал сначала 1-ю функцию а потом 2-ю вот пример скрипта 0_1504485501236_project.xml , а в случае выбора 2-х потоков 1-я функция запускалась в 1-ом потоке, а 2-ая функция во 2-ом потоке!?
Если к ПРИМЕРУ в скрипте 20 функций и внутри них (функций) стоят разные сайты. Ну и соответственно логика та же: выбрали 20 потоков запустилось 20 потоков в каждом из них обработалась своя функция, а если выбрали 5 потоков то открылось 5 потоков и в них поочередно обработалось сначала 5 функций, потом еще 5 ну и т.д. -
@ROMEOinLOVE Прлучить номер потока
IF номер потока == 1
Запуск первой функции
И т.д -
@ROMEOinLOVE
Тогда лучше все сделать по другой логике
Создаен фунацию OnApplicationStart, в ней :
Создать ресурс, допустим test, количество успехов и неудач установить побольше(999999999), а одновременных использований 1
Выполнить кодVAR_TEST = [1,2,3,4,5,6,7,8,9,10] // чисел столько, сколько функцийЗатем действие FOREACH для списка [[TEST]], в котором действие добавить елемент из раздела ресурсы, в ресурс test
Переходим обратно в Main функцию, в ней :
IF {{test}} == 1
Вызов функции 1
Действие удалить текущий елемент из раздела ресурсы для
ресурса testИ так для каждой функции
-
@DrPrime Будьте так добры! Взгляните на пример скрипта 0_1504525468549_test.xml у меня он вылетает с ошибкой!((( Видимо я не совсем правильно Вас понял!((( Поправьте пожалуйста!!! Буду очень признателен!!!
-