Naftalindo Postado Abril 13, 2018 Denunciar Compartilhar Postado Abril 13, 2018 eae galera, eu estou fazendo meu servidor, fiz um plugin né, só flodava console de erro por causa que uso muitas conexões se alguem poder me enviar uma classe mysql sem lagar e como usar tipo public void setarPrefs(final String nome, final int tell, final int coins, final int tpa, final int vanish) throws SQLException { final Connection con = this.getConnection(); final String awe = String.valueOf(String.valueOf(tell)) + ";" + coins + ";" + tpa + ";" + vanish; try { final PreparedStatement ps = con.prepareStatement("UPDATE contas SET prefs = ? WHERE player = ?;"); ps.setString(1, awe); ps.setString(2, nome.toLowerCase()); ps.executeUpdate(); } finally { if (con != null) { con.close(); } } if (con != null) { con.close(); } } Eu estava utilizando esse finally a cima, não resolveu!! estou recodando todo o plugin :v triste mais tmj Link para o comentário Compartilhar em outros sites More sharing options...
GuiHSilva Postado Abril 13, 2018 Denunciar Compartilhar Postado Abril 13, 2018 Voce nao precisa fechar a conexao toda vez que acessar o banco de dados... Isso na verdade é um mal uso, voce pode utilizar a mesma conexao para executar diversos querys! Pelo oq eu to vendo, sempre q vc vai ATUALIZAR um dado, voce fecha a conexao toda vez! Link para o comentário Compartilhar em outros sites More sharing options...
Naftalindo Postado Abril 13, 2018 Autor Denunciar Compartilhar Postado Abril 13, 2018 (editado) Voce nao precisa fechar a conexao toda vez que acessar o banco de dados... Isso na verdade é um mal uso, voce pode utilizar a mesma conexao para executar diversos querys! Pelo oq eu to vendo, sempre q vc vai ATUALIZAR um dado, voce fecha a conexao toda vez! O problema, é que tem 10 plugins fazendo conexão no task de 1 segundo. Mais se você conseguir resolver, ficarei grato. Editado Abril 13, 2018 por Naftalindo Link para o comentário Compartilhar em outros sites More sharing options...
GuiHSilva Postado Abril 13, 2018 Denunciar Compartilhar Postado Abril 13, 2018 O problema, é que tem 10 plugins fazendo conexão no task de 1 segundo. Mais se você conseguir resolver, ficarei grato. Voce fica atualizando isso tudo de um em um segundo? Isso é mais que obvio que vai lagar! Link para o comentário Compartilhar em outros sites More sharing options...
Naftalindo Postado Abril 13, 2018 Autor Denunciar Compartilhar Postado Abril 13, 2018 Voce fica atualizando isso tudo de um em um segundo? Isso é mais que obvio que vai lagar! Oque você acha que eu devo fazer ? vou refazer todos plugins, me indica algo ? por favor :) Link para o comentário Compartilhar em outros sites More sharing options...
GuiHSilva Postado Abril 13, 2018 Denunciar Compartilhar Postado Abril 13, 2018 (editado) Claro! Voce pode salvar todas essas configuracoes dos players em objetos, pelo oq eu to vendo, vc esta armazenando algumas informacoes dos players, crie um objeto dessa forma: (digamos que esse objeto vai se chamar Preferencias) public class Preferencias { private String name; private boolean tell; private int coins; private boolean tpa; private boolean vanish; public Preferencias(String nome, boolean tel, int coin, boolean tp, boolean vanis) { name = nome; tell = tel; coins = coin; tpa = tp; vanish = vanis; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isTell() { return tell; } public void setTell(boolean tell) { this.tell = tell; } public int getCoins() { return coins; } public void setCoins(int coins) { this.coins = coins; } public boolean isTpa() { return tpa; } public void setTpa(boolean tpa) { this.tpa = tpa; } public boolean isVanish() { return vanish; } public void setVanish(boolean vanish) { this.vanish = vanish; } } Ai voce salva esse objeto em cache, é um esqueminha bem loco, tipo assim: public static ArrayList<Preferencias> preferencias_cached = new ArrayList<>(); @EventHandler private void aoEntrar(PlayerJoinEvent e) { Preferencias pref = new Preferencias(e.getPlayer().getName(), false, 55, true, false); preferencias_cached.add(pref); } Ai voce cria uma task, de 5 em 5 minutos, pra atualizar as informacoes do "preferencias_cached" direto no mysql, assim voce reduz o numero de conexoes e de tasks @EDIT: Ai, se voce precisar consultar alguma coisa no mysql, e ja estiver o "preferencias_cached" salvo no arraylist, nao vai precisar consultar o mysql, so vai precisar consultar a variavel Editado Abril 13, 2018 por GuiHSilva Link para o comentário Compartilhar em outros sites More sharing options...
Naftalindo Postado Abril 13, 2018 Autor Denunciar Compartilhar Postado Abril 13, 2018 Claro! Voce pode salvar todas essas configuracoes dos players em objetos, pelo oq eu to vendo, vc esta armazenando algumas informacoes dos players, crie um objeto dessa forma: (digamos que esse objeto vai se chamar Preferencias) public class Preferencias { private String name; private boolean tell; private int coins; private boolean tpa; private boolean vanish; public Preferencias(String nome, boolean tel, int coin, boolean tp, boolean vanis) { name = nome; tell = tel; coins = coin; tpa = tp; vanish = vanis; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isTell() { return tell; } public void setTell(boolean tell) { this.tell = tell; } public int getCoins() { return coins; } public void setCoins(int coins) { this.coins = coins; } public boolean isTpa() { return tpa; } public void setTpa(boolean tpa) { this.tpa = tpa; } public boolean isVanish() { return vanish; } public void setVanish(boolean vanish) { this.vanish = vanish; } } Ai voce salva esse objeto em cache, é um esqueminha bem loco, tipo assim: public static ArrayList<Preferencias> preferencias_cached = new ArrayList<>(); @EventHandler private void aoEntrar(PlayerJoinEvent e) { Preferencias pref = new Preferencias(e.getPlayer().getName(), false, 55, true, false); preferencias_cached.add(pref); } Ai voce cria uma task, de 5 em 5 minutos, pra atualizar as informacoes do "preferencias_cached" direto no mysql, assim voce reduz o numero de conexoes e de tasks @EDIT: Ai, se voce precisar consultar alguma coisa no mysql, e ja estiver o "preferencias_cached" salvo no arraylist, nao vai precisar consultar o mysql, so vai precisar consultar a variavel Obrigado, mais uma outra coisa, meu plugin de grupos é via mysql, e em todos os servidores + bungeecord, oque faço ? Link para o comentário Compartilhar em outros sites More sharing options...
Lightwood Postado Junho 28, 2019 Denunciar Compartilhar Postado Junho 28, 2019 Seu tópico foi marcado como Inativo. Para reverter está ação, entre em contato com a equipe de Moderação. OBS: Essa mensagem é automática. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados