Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
log = function (text, color, define){ var id, time, thread, logHtml, textLog; define = (typeof define == 'string') ? define.split(/[\s,.|:;]+/g) : define; if(typeof define === 'object' && define !== null){ if(Array.isArray(define)){ id = define.indexOf('id') > -1; time = define.indexOf('time') > -1; thread = define.indexOf('thread') > -1; } else{ id = define.id == true; time = define.time == true; thread = define.thread == true; } } else id = time = thread = true; id = id ? '<a href="action://action' + ScriptWorker.GetCurrentAction() + '" style="color:gray;">[' + ScriptWorker.GetCurrentAction() + ']</a>' : ''; time = time ? ' ' + getTime() : ''; thread = thread ? ' Поток №' + thread_number() : ''; logHtml = (id || time || thread) ? id + '<span style="color: white">' + time + thread + ' : </span>' : ''; logHtml += '<span style="color:' + (color ? color : 'white') + '">' + text + '</span>'; textLog = '[' + ScriptWorker.GetCurrentAction() + ']' + time + thread + ' : ' + text function getTime(){ var checkTime = function(i){ return (i < 10) ? "0" + i : i; }; var checkMilliSeconds = function(ms){ if (ms < 10) { return "00" + ms; } else if (ms < 100) { return "0" + ms; } else { return ms; } }; var d = new Date(); var hh = checkTime(d.getHours()); var mm = checkTime(d.getMinutes()); var ss = checkTime(d.getSeconds()); var ms = checkMilliSeconds(d.getMilliseconds()); return '[' + hh + ':' + mm + ':' + ss + '.' + ms + ']'; }; Logger.WriteHtml(logHtml, textLog); }Помогите понять ошибку в многопотоке
-
Всем привет! Ребята, кто не занят и к то в теме помогите понять ошибку
скрипт в линию при отладке работает нормально - только в многопоток перехожу через запуск - идет ошибка и понять ее не могу вроде все норм - кто укажет?
0_1490291317009_PROXY_PARSE_BAS.zip -
Вот пример для многопотока через браузер 0_1490465265175_PARSER_PROXY_LINK.xml
Хотя так плохо, потому что долго и ресурсы жрет.
Лучше через гет запрос. вот пример 0_1490465396913_PARSER_PROXY_LINK2.xml
Выставляешь потоки и вперед. Для гет - хоть 300 потоков, все зависит от канала связи и компа. -
@support Кстате к сапорту. Что было замечено, что какой-то бах есть с функцией onApplicationStart - переменные не передаются на все потоки, если они в ней объявлены. Даже в этом примере, если указать расположение ресурса в 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 считать эту ГП в локальную и использовать дальше локальную.
в примере наглядно показано.