@Verel said in На 1 поток 5 Chromium?:
Спасибо! Стало понятно. Снизить потребление памяти никак?
Юзать моб.отпечатки
И да, сервера с памятью копейки стоят, если знать где покупать, проще их купить и голову не ломать
Добрый день, столкнулся с проблемой незакрытия браузера! реально работают около 5 - 7
0_1571726472308_bassss.PNG
в 2 х словах
try {
ThreadRun.StopThread();
} catch (e) {}
try {
ThreadRun = new BASThread();
a = ThreadRun[i].RunFunction("bbb" , {}); // тут в черных кишках открываються браузер урл может иногда и не открыться
c = await a;
ThreadRun.StopThread();
} catch (e) {}
интересует как погасить пустышки или открытые потоки у которых время работы больше 10 минут ( при етом я могу не знать имен етих переменных потоков ( Они генеряться автоматически
@vitsh1974 said in Закрыть принудительно поток:
Добрый день, столкнулся с проблемой незакрытия браузера! реально работают около 5 - 7
0_1571726472308_bassss.PNGв 2 х словах
try {
ThreadRun.StopThread();
} catch (e) {}try {
ThreadRun = new BASThread();
a = ThreadRun[i].RunFunction("bbb" , {}); // тут в черных кишках открываються браузер урл может иногда и не открыться
c = await a;
ThreadRun.StopThread();
} catch (e) {}интересует как погасить пустышки или открытые потоки у которых время работы больше 10 минут ( при етом я могу не знать имен етих переменных потоков
Проще изначально сохранять в массив все промисы. Но можно воспользоваться методом Api.GetTasks()
https://wiki.bablosoft.com/web-interface/#/callbasfunction?id=function-statistic
он вернёт объект со всеми запущенными функциями
@vitsh1974 Метод вернул уже объект в котором есть промис для каждого потока.
в принципе да вот то что нужно СПАСИБО
Example #2. Stop only long running tasks:
var RunningTasks = Api.GetTasks()
Object.values(RunningTasks).forEach(function(Task){
if(Task.started_at < Date.now() - 1000 * 60 * 60)
{
if(Task.type == "function")
Task.object.stop();
else
Task.object.StopThread();
}
})
@vitsh1974 said in Закрыть принудительно поток:
получаеться дело не совсем в потоках...
вот скрин - запущен 1 поток а браузеров 4.... даже если ручками удалить хтмл, а потом опять открыть инспекотр браузеров, он покажет 4, а теоретически должно быть 1
Функции могут работать без эмуляции браузера, но вот эмуляция браузера ни как не может работать без потока. Что вы хотите сделать то?
@fox
вот у меня такой код ( может чего то не хватает?
да все верно -- у меня есть ряд вызовов без браузера...
может они как то влияние оказывают.
если они - то хотелось бы их исключить .... ето простые гет запросы на получнеие даннх
/////Browser started, need to update running browser label
if (EventType == "browser_add") {
let CurrentValue = parseInt($("#BrowserNumber").html())
$("#BrowserNumber").html((CurrentValue + 1).toString())
/////Add browser to viewer
AddBrowser(EventData["browser_id"], EventData["thread_number"])
}
/////Browser finished, need to update running browser label
if (EventType == "browser_remove") {
let CurrentValue = parseInt($("#BrowserNumber").html())
$("#BrowserNumber").html((CurrentValue - 1).toString())
/////Remove browser from viewer
RemoveBrowser(EventData["browser_id"], EventData["thread_number"])
}
т е в конечном итоге мне не надо показывать ети кнопки при нажатии на которую будет екаранчик с
Image unavailable. Possibly browser is closed.
@vitsh1974 said in Закрыть принудительно поток:
@fox
вот у меня такой код ( может чего то не хватает?
да все верно -- у меня есть ряд вызовов без браузера...
может они как то влияние оказывают.
если они - то хотелось бы их исключить .... ето простые гет запросы на получнеие даннх/////Browser started, need to update running browser label
if (EventType == "browser_add") {
let CurrentValue = parseInt($("#BrowserNumber").html())
$("#BrowserNumber").html((CurrentValue + 1).toString())/////Add browser to viewer AddBrowser(EventData["browser_id"], EventData["thread_number"]) } /////Browser finished, need to update running browser label if (EventType == "browser_remove") { let CurrentValue = parseInt($("#BrowserNumber").html()) $("#BrowserNumber").html((CurrentValue - 1).toString()) /////Remove browser from viewer RemoveBrowser(EventData["browser_id"], EventData["thread_number"]) }
Зачем вам создавать потоки и управлять его жизнью вручную? Используйте простой вызов функции:
Api.RunFunction("LoadUrl", {Url: "ip.bablosoft.com"})
Если нужно получить результат вызова:
var Result = await Api.RunFunction("LoadUrl", {Url: "ip.bablosoft.com"})
console.log("Page content is " + Result)
Если возможна ошибка во время выполнения:
try
{
var Result = await Api.RunFunction("LoadUrl", {Url: "ip.bablosoft.com"})
console.log("Page content is " + Result)
}catch(e)
{
console.log("Function finished with error " + e)
}
В мануале всё подробно расписано
все таки хотелось бы поподробнее про
InitBrowserViewer(); узнать
ее параметры и что на что влияет... вероятно ето то ли я что то неправильно делаю, то ли какой то бок.. так как реально получаеться что вроде как 1 поток 1 браузер, а висит 4 кнопки ( хотелось бы чтобы 1)

возможно идут какие то бока ( были же -- утечка мозгов... може что то не допилили? могу тиам дать
@vitsh1974 said in Закрыть принудительно поток:
все таки хотелось бы поподробнее про
InitBrowserViewer(); узнать
ее параметры и что на что влияет... вероятно ето то ли я что то неправильно делаю, то ли какой то бок.. так как реально получаеться что вроде как 1 поток 1 браузер, а висит 4 кнопки ( хотелось бы чтобы 1)возможно идут какие то бока ( были же -- утечка мозгов... може что то не допилили? могу тиам дать
Как показывает практика по TeamViewer редко удаётся решить проблему. Создайте тестовый интерфейс с проблемой, экспортируйте и приложите его здесь в сообщении
@vitsh1974 said in Закрыть принудительно поток:
пробовал вызывать Api.RemoveBrowser(4323)
да вроде как процесс ушел, но кнопочка показать браузер осталась
А куда она должна деться? Вы ведь просто скрываете браузер
Верстка сама не сверстается ))
вот код, фиксации утечек
GetBrowsers = Api.GetBrowsers();
GetTasks = Api.GetTasks();
Object.values(GetBrowsers).forEach(function (Task) {
//Api.HideBrowser(Task.browser_id);
// console.log(Task);
aa = _.where(GetTasks, {
browser_id: Task.browser_id
});
console.log(aa.length + ' ' + Task.task_id + ' ' + Task.browser_id);
if (aa.length == 0) {
Api.RemoveTask(Task.task_id);
Api.Send("stop_thread", {
thread_id: Task.task_id
});
}
// Api.RemoveTask(Task.task_id)
// Api.Send("stop_thread", {thread_id: Task.task_id})
})