Alex Lav, если вопрос про API, это это действительно странное поведение - это прямое нарушение API/контракта.
Тут скорее проблема на вашей стороне:
- Может в BasePlayer.activePlayerList только 1 пользователь
- Может
if (player.IsReceivingSnapshot)
{
NextTick(() => OnPlayerConnected(player));
return;
}
постоянно срабатывает
- Может вашей библиотеке для отправки запросов поплохело
- Этот public class GameSib : RustPlugin на каждого пользователя создается
AlanSalamov, это делают через специальные метрики. если использовать условный UPDATE, то это ударит по производительности, т.к. нужно будет на каждый запрос делать лишний в БД.
Лучше это сделать через Prometheus - каждый сервер хранит свое кол-во просмотров в памяти и есть агрегатор, который делает запросы за этими просмотрами.
Можно и свое решение сделать (не Prometheus), но идею ты понял.
Если данные хранить критично, то тут лучше Redis какой-нибудь. Но использовать СУБД для этих целей думаю не целесообразно
MVV, весь вопрос можно сократить до: если у меня есть проект на C++ (.cpp, .h):
1. Могу ли я один раз скомпилировать проект в дин. библиотеку и дальше распространять его в формате .hpp + .so (даже с различными компиляторами) или
2. Для использования нужно будет каждому пользователю подключать исходники и компилировать самому.
historydev, ты хочешь выполнить команду на удаленном сервере, используя переменные окружения оттуда. Все что тебе нужно сделать - передать строку со скриптом, в котором нужные переменные окружения в будут явно указаны. Если не экранировать, то будут подставляться переменные из места вызова, т.е. текущей машины.
Дополнительно можно попробовать заменить двойные кавычки на одинарные - они не подставляют переменные
Тут скорее проблема на вашей стороне:
- Может в
BasePlayer.activePlayerList
только 1 пользователь- Может постоянно срабатывает
- Может вашей библиотеке для отправки запросов поплохело
- Этот
public class GameSib : RustPlugin
на каждого пользователя создаетсяЭтот маленький кусок кода мало что говорит