Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
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); }Посоветуйте логику работы с удаленной mysql в многопотоке
-
@korzhec said in Посоветуйте логику работы с удаленной mysql в многопотоке:
Соответственно скорость взаимодействия с базой значительно падает.
Значительно это на сколько ? Используй innodb подкрути базу, убери лишнее логирование базы.
И я подозреваю что 200 твоих потоков не в одну секунду будут ломиться ...
Вместо официального используй percona ну или машу
-
И скорее всего будет аффективнее не удалять, а добавлять метку true/false в колонку использования.
-
@eloventure мб в базу добавить еще строчку и проверять её заполненность?))
-
@eloventure said in Посоветуйте логику работы с удаленной mysql в многопотоке:
Никто не придумал решение как синхронизировать несколько BAS с разных машин с одной удаленной БД, чтобы "Количество одновременных использований" со всех BAS было "1" для БД?
Для вот этого))
-
как
@fluffik said in Посоветуйте логику работы с удаленной mysql в многопотоке:
@eloventure мб в базу добавить еще строчку и проверять её заполненность?))
может помочь с
@fluffik said in Посоветуйте логику работы с удаленной mysql в многопотоке:
@eloventure said in Посоветуйте логику работы с удаленной mysql в многопотоке:
Никто не придумал решение как синхронизировать несколько BAS с разных машин с одной удаленной БД, чтобы "Количество одновременных использований" со всех BAS было "1" для БД?
Для вот этого))
-
@korzhec said in Посоветуйте логику работы с удаленной mysql в многопотоке:
Самое грустное то, что баг с подключением к удаленной mongodb так и не фикснули
А с каких пор багом называют отсутствие какого то конкретного функционала?
@fluffik said in Посоветуйте логику работы с удаленной mysql в многопотоке:
@korzhec объясни в чем баг, укажи фокса в теме он проверит и передаст создателю, не вижу проблемы в сообщении проблемы)))
Ненавижу, когда без особой нужды просят "посмотреть мою тему"

Я уже писал о том, что я все темы вижу и читаю. У нас не такой большой поток, что бы "потерять" какую нибудь тему из виду. Но отвечаю я когда есть на это время
-
@tet-vivi said in Посоветуйте логику работы с удаленной mysql в многопотоке:
@eloventure используй промежуточный сервер
@tet-vivi не совсем понял идею, можете чуть подробнее, пожалуйста?
@Bigma said in Посоветуйте логику работы с удаленной mysql в многопотоке:
И скорее всего будет аффективнее не удалять, а добавлять метку true/false в колонку использования.
тоже так думал сделать, но для использования строк базы в цикле, необходимо возвращать значение false после итерации. а если происходит ошибка в потоке, в итоге true так и останется. и чтобы это обойти еще кучу костылей городить.
-
@eloventure said in Посоветуйте логику работы с удаленной mysql в многопотоке:
тоже так думал сделать, но для использования строк базы в цикле, необходимо возвращать значение false после итерации. а если происходит ошибка в потоке, в итоге true так и останется. и чтобы это обойти еще кучу костылей городить.
Не совсем понятно что вы имеете ввиду. В каком цикле и зачем вы собрались использовать строки.
То есть если вы более подробно опишите задачу, можно будет подумать над ее решением.
-
@Bigma said in Посоветуйте логику работы с удаленной mysql в многопотоке:
И скорее всего будет аффективнее не удалять, а добавлять метку true/false в колонку использования.
тоже так думал сделать, но для использования строк базы в цикле, необходимо возвращать значение false после итерации. а если происходит ошибка в потоке, в итоге true так и останется. и чтобы это обойти еще кучу костылей городить.
можно сразу после взятия строки изменять в базе на false, а не по окончании.
@eloventure said in Посоветуйте логику работы с удаленной mysql в многопотоке:
@tet-vivi said in Посоветуйте логику работы с удаленной mysql в многопотоке:
@eloventure используй промежуточный сервер
@tet-vivi не совсем понял идею, можете чуть подробнее, пожалуйста?
можно на промежуточном сервере разместить логику работы с сервером БД
-
@Bigma said in Посоветуйте логику работы с удаленной mysql в многопотоке:
Не совсем понятно что вы имеете ввиду. В каком цикле и зачем вы собрались использовать строки.
То есть если вы более подробно опишите задачу, можно будет подумать над ее решением.
есть БД со строками login:password
есть, допустим, 5 серверов с запущеным БАС, которые берут строку login:password из удаленной БД
строка может быть использована неограниченное кол-во раз
нужно сделать так, чтобы одна строка не использовалась одновременно на двух серверах@tet-vivi said in Посоветуйте логику работы с удаленной mysql в многопотоке:
можно сразу после взятия строки изменять в базе на false, а не по окончании.
тогда будет непонятно, используется эта строка или нет для других серверов
@tet-vivi said in Посоветуйте логику работы с удаленной mysql в многопотоке:
можно на промежуточном сервере разместить логику работы с сервером БД
вот это я как раз понял) имелось в виду, на чем обработчик - что-то вроде php скрипта, который принимает запросы с айдишником от каждого сервера, распределяет очередь, делает селект из базы, и шлет обратно БАСу. А логику неиспользования одной строчки одновременно два/три/десять раз как реализовать?
-
@eloventure если php, хранить идентификатор используемых в базе вроде мемкеша или redis.(хотя можно и просто в файлах)
есть возможность блокировки в mysql, например транзакции.
это сможет стать защитой от изменения поля true/false от других в этот момент запросов.(транзакции как раз для этого и нужны)
я в это не сильно углублялся, и не могу точно и правильно рассказать.(и давно было)