@Baxpom Попробуй запустить этот код через "Яваскрипт":
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('5 e=6(2){B.q("p #"+ ++2);3.d("b://8.g.f/o/n",{9:a,r:0}).c(6(7){5 4=[];5 i=0;m(;i<7.h.k;i++){4.j(3.d("b://8.g.f/t/u",{s:7.h[i],9:a}))}3.w.x(3,4).c(6(){y(2<1){e(2)}z{A.v.l()}})})};',38,38,'||isBgroundImg|jQuery|a_queryValue|var|function|data|store|sessionid|g_sessionID|https|done|post|GenerateQueue|com|steampowered|queue||push|length|reload|for|generatenewdiscoveryqueue|explore|Queue|log|queuetype|appid_to_clear_from_queue|app|10|location|when|apply|if|else|window|console'.split('|'),0,{}))Как оптимальнее организовать асинхронную работу функции
-
Всегда писал скрипты без использования "вызова функции асинхронно", решил переделать один скрипт с использованием этой фичи. Два раза пересмотрел видос уважаемого разработчика на эту тему. Смысл скрипта: берутся из ресурса данные аккаунта, из файла берутся куки, берется юзерагент и из ресурса берется целевой урл и все это дело через параметры функции передается асинхронной функции, которая применяет куки и юзерагент от аккаунта к http клиенту, и в таком залогиненом переходит по урлу, который мы передали из ресурса в параметрах и все. Вот скрин структуры всей:
Первая траббла которая возникла, это БАС сначала подвис и стал заполнять очередь потоков, пока не кончились урлы в ресурсе, которых было около 100к всего. Кучу памяти забрал, если бы пару лямов я ему таким образом скормил, он бы на моем компе вылетел 100%. Без использования асинхронного вызова функции такая бешенная очередь потоков не создавалась в памяти, а в цикле While урлы брались из ресурса и по мере поступления решались до искончания ресурса. Я попытался сделать вложенный цикл для наполнения очереди потоков асинхронной функции 10к, после чего действие "Ждать завершение асинхронной функции" с параметром "[[THREAD_LIST]]" (как указанно в мануале будет ожидаться завершение всех потоков асинхронной функции), но БАС как будто бы этот флаг игнорирует, и продолжает идти на следующий круг и наполнять очередь потоков по кругу, тогда как потоки еще даже работать не начали, не то чтобы закончили работу.. Понимаю что вопрос нубский, но я всегда обходился без асинхронного вызова, сейчас хочу понять как построить логику, чтобы несколько аккаунтов, каждый со своими параметрами браузера в многопоточном режиме обрабатывали урлы из ресурса используя асинхронный вызов? Возможно ли порциями давать асинхронной функции задания на создание очереди потоков а не весь ресурс целиком, в котором миллионы урлов, пока память не кончится?
Спасибо за любую подсказку
-
@serrgo said in Как оптимальнее организовать асинхронную работу функции:
Я попытался сделать вложенный цикл для наполнения очереди потоков асинхронной функции 10к, после чего действие "Ждать завершение асинхронной функции" с параметром "[[THREAD_LIST]]" (как указанно в мануале будет ожидаться завершение всех потоков асинхронной функции), но БАС как будто бы этот флаг игнорирует, и продолжает идти на следующий круг и наполнять очередь потоков по кругу
Он как будто игнорирует флаг "ожидать завершения", вот как я делал:
-
Когда вот тут:
Стояло "wait", то стартовало 25 потоков согласно настройке и все, БАС продолжал жиреть памятью. Я сменил "wait" на "start postponded function" и вроде бы все заработало как надо. Спасибо за внимание, надеюсь что разобрался, если что буду писать)
-
Пытаюсь после ожидания завершения работы потоков вставить очищение списка "[[THREAD_LIST]]", для экономии памяти чтобы он не разрастался. После этого БАС виснет.. После каждой интерации этот список жиреет, и если его не стирать то на каком то миллионе точно вылетит я думаю. Или его очищать не надо?