Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
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); }Как сделать "вечный скрипт"?
-
Здравствуйте. С BAS не скажу что очень прям хорошо знаком, но написал уже несколько довольно сложных парсеров, а сейчас вот затык.. Поискал по форуму, ответа на свой вопрос не нашел, поэтому извиняюсь если такое уже спрашивали. Суть в том, что мне надо парсить один сайт, и у меня в текстовом файле есть список id для парсинга, а сам парсер работает по такой логике:
- В многопоточном режиме захожу на сайт, получаю куки
- Начинаю парсить в while(true). Для этого беру значение из ресурса только один раз для каждого потока {{list_id|notreuse}}
- Далее данные отправляются моему скрипту на php (мне проще на нам было реализовать функционал)
- Отслеживаю количество id в ресурсе и если еще есть, то поток переходит к новому id
- Если количество равно 0, то на php-скрипт отправляется запрос ENDWORK и скрипт формирует отчет
Проблема в том, что после того как все ID пройдены, мне нужно чтоб парсер сам перезапустился и начал заново все опять собирать. Пробовал перезагружать ресурс если оставшееся количество в нем равно 0, но другие потоки уже завершают свою работу, и остается работать только один, тот который перезагрузил ресурс. Иногда бывает что несколько, если 0 пршелся на поток который завершился ранее, чем еще работающие. Вопрос, как после перезагрузки ресурса перезагрузить сами потоки? Или может как-то проще можно такую задачу реализовать? Буду очень благодарен за помощь, бьюсь с этой проблемой третий день..
-
у чата жпт не спрашивал? вот чо он мне написал, хз правильно не, вполне возможно что нет)))
-
@basuser123 Спасибо за помощь, но выполнение js-скрипта выдает ошибку "Поток №1 : ReferenceError: BAS_restart is not defined", и про функцию BAS_restart() нет ничего ни в гугле, ни тут по поиску на форуме
-
@FedorFaust Боюсь, что это был просто стёб... Сам по себе чатгпт не состоянии понять какую чушь он пишет...
-
@FedorFaust Самое простое это запускать 1 поток, а в нем использовать запуск функции в несколько потоков и это в цикл, в конце каждого цикла перезагружаете ресурс
-
@FedorFaust Вечного ничего не бывает. После забивки папки с кешем, комп напросто зависнет.
На счёт окончания работы: нет ничего сложного сбросить переменные и вернуться к началу скрипта. -
@gurkin4 said in Как сделать "вечный скрипт"?:
@FedorFaust Вечного ничего не бывает. После забивки папки с кешем, комп напросто зависнет.
На счёт окончания работы: нет ничего сложного сбросить переменные и вернуться к началу скрипта.Что там у вас забивает? У меня скрипты по неделе работают, ничего не забивается.
-
@gurkin4 said in Как сделать "вечный скрипт"?:
@UserTrue Вечный? Даже комп имеет свой срок жизни!
По неделе! Ха, я уже около года кручу, перегружал только для обновления ОС, но это далеко не вечность!Понятно , опять ценные 5 копеек