Помогите понять ошибку в многопотоке
-
Вот пример для многопотока через браузер 0_1490465265175_PARSER_PROXY_LINK.xml
Хотя так плохо, потому что долго и ресурсы жрет.
Лучше через гет запрос. вот пример 0_1490465396913_PARSER_PROXY_LINK2.xml
Выставляешь потоки и вперед. Для гет - хоть 300 потоков, все зависит от канала связи и компа.
-
@support Кстате к сапорту. Что было замечено, что какой-то бах есть с функцией onApplicationStart - переменные не передаются на все потоки, если они в ней объявлены. Даже в этом примере, если указать расположение ресурса в onApplicationStart то большенство потоков будет иметь фейл, с сообщением про то что не знают такой переменной, но некоторые потоки обработаются удачно.
-
@seedgg в on aplication start можно указать только глобальные переменные, что бы потоки их увидели. Обычные переменные видны только в рамках одного потока
-
@DrPrime Спасибо, теперь понятно как нужно работать с onApplicationStart
-
Ребята спасибо @seedgg - while я использовал в отладке, чтобы если на странице прокси не найдены не перезагружать скрипт -
и все же @DrPrime - подскажи - почему выдает такую ошибку:
"ReferenceError: Can't find variable: VAR_NEW_LIST Номер строки:29 Во время выполнения скрипта VAR_SAVED_PAGE_HTML = _result() ; ; VAR_SCAN_RESULT_LIST = (function(){var rs = []; var r = new RegExp("(\u005cd\u007b1,4\u007d[\u005c.]\u005cd\u007b1,4\u007d[\u005c.]\u005cd\u007b1,4\u007d[\u005c.]\u005cd\u007b1,4\u007d:\u005cd\u007b2,5\u007d)","gm"); var s = VAR_SAVED_PAGE_HTML; var m; var i = -1; while(m = r.exec(s)){if(i == m.index) break; i = m.index; rs.push((m.length>1) ? m[1] : m[0]);} return rs;})() ; ; _if(VAR_SCAN_RESULT_LIST.length==0,function(){ ; log("Прокси на странице не найдены!") ; ; _next("function") ; },function(){ ; ; VAR_NEW_LIST.push(VAR_SCAN_RESULT_LIST) ; ; VAR_JOIN_RESULT_STRING = (VAR_NEW_LIST).join(",") ; ; VAR_NEW_LIST = (VAR_JOIN_RESULT_STRING).split(",") ; ; native("filesystem", "writefile", JSON.stringify({path: VAR_RESOURCE_LOCATION_2,value: (VAR_NEW_LIST).join("\r\n") + ((true) ? "\r\n" : "" ),base64:false,append:true})) ; ; RS("link_site_search", false, false,function(){ RESOURCE_944081 = _result().get() native("filesystem", "writefile", JSON.stringify({path: VAR_RESOURCE_LOCATION,value: (RESOURCE_944081).toString() + "\r\n",base64:false,append:true})) ; ; log("Прокси найдены!") ; ; _next("function") ; })});"
я понимаю - это из-за того что создание списка идет в онапликатионстарт - а список это обычная переменная?
если так - то как тогда создать список один раз в онапликатионстарт, чтобы он в мейн не создавался количество раз равное количеству потоков?
-
@Turutur said in Помогите понять ошибку в многопотоке:
VAR_NEW_LIST
в онапстарт создаются глобальные переменные, что получить доступ к твоему списку VAR_NEW_LIST созданному в онапстарт, нужно считать эту переменную в локальную.
-
@Turutur said in Помогите понять ошибку в многопотоке:
а список это обычная переменная?
да, список,таблица не важно что, это переменная. Данные лежат в оперативной памяти, а переменная позволяет обратится к этим данными и получить их.
-
@out said in Помогите понять ошибку в многопотоке:
в онапстарт создаются глобальные переменные, что получить доступ к твоему списку VAR_NEW_LIST созданному в онапстарт, нужно считать эту переменную в локальную.
@out - какая последовательность?
в онапстарт создаю список - а дальше? список будет в локальной переменной... как мне эту переменную вывести в main
-
- в онапстарт создать свой список, дальше создать глоб пер. и присвоить список. Или сразу создать ГП , это уже как получится.
- в main считать эту ГП в локальную и использовать дальше локальную.
в примере наглядно показано.