![]() |
[Ajuda] melhor forma de usar cache_delete - Versão de Impressão +- Portal SAMP (https://portalsamp.com) +-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5) +--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6) +--- Tópico: [Ajuda] melhor forma de usar cache_delete (/showthread.php?tid=3927) |
melhor forma de usar cache_delete - tylerthecreator - 25/08/2023 Boa tarde, galera! Busquei tutoriais e formas de uso do "cache_delete" e não encontrei, alguém pode me ajudar? Qual melhor forma de uso? Devo usar apenas nos SELECT ou em UPDATE também é necessário? Este exemplo de uso está correto? Código: mysql_format(mysql, string, sizeof string, "SELECT `Nome` FROM `contas` WHERE `Nome`='%e';", account); RE: melhor forma de usar cache_delete - White_Blue - 25/08/2023 Não, você não precisa atualizar o banco de dados após usar o cache_delete, pois esse comando não afeta diretamente o banco de dados, apenas deleta o cache da memória. Mas vale lembrar o seguinte, cache não vale para valores permanentes do banco de dados, o cache é apenas válido para valores temporários, que você pode definir usando as funções cache_set_active e cache_get_value. Para deletar valores permanentes no banco de dados, você pode executar a query DELETE. Exemplo: Código PHP: mysql_query(MySQL, "DELETE FROM players;"); // Deleta todos os dados contidos na tabela 'player' RE: melhor forma de usar cache_delete - Dr Editor - 25/08/2023 Sua dúvida está relacionada a propria função. Basta interpretá-la. Código PHP: mysql_query(MySQL:handle, const query[], bool:use_cache = true) O parâmetro use_cache especifica a necessidade do uso do cache e por padrão sempre vai usá-lo. O fato de estar sempre ativo creio que seja porque a consulta, não importa qual for, retorna o número de linhas afetadas. O ideal se utilizar DELETE, UPDATE ou INSERT é deixar o cache desativado, pois normalmente é pouco usado (isso quando é usado). Sinceramente, não faço ideia do que acontece em um vazamento de memória onde o servidor fica muito tempo online e gera um certo acúmulo desse cache. Talvez o servidor tome um crash ou comece a bugar os resultados... Dificil afirmar porque nunca tive essa experiência. Recentemente sem querer descobri que havia esquecido de limpar o cache de algumas consultas, porém percebi isso muito cedo e não tive nenhum contra-tempo em decorrência disso. Superficialmente o vazamento de memória consiste em gerar um identificador para cada consulta e ele é resposável pelo resultado desta. Se não limparmos a memória esse identificador vai somando até, provavelmente, bater o limite do tipo numérico (2,147,483,647) e é nessa parte que nunca cheguei para contar o final da história (realmente estou curioso). RE: melhor forma de usar cache_delete - strelo - 26/08/2023 Vou tentar ajudar com suas dúvidas sobre o uso do cache_delete e como aplicá-lo nos comandos SELECT e UPDATE. O comando cache_delete é usado para liberar a memória ocupada por um conjunto de resultados em cache após uma consulta. Ele é particularmente útil quando você não precisa mais dos resultados da consulta armazenados na memória. No entanto, é importante observar que você só deve chamar cache_delete quando realmente não precisa mais dos dados armazenados em cache. No exemplo que você forneceu, parece que você está usando a função mysql_query para executar uma consulta SELECT e, em seguida, verificando se há linhas retornadas usando cache_num_rows. Se houver linhas retornadas, você executa um bloco de código. No entanto, o código cache_delete(result) logo após isso pode não estar correto. Isso ocorre porque o result provavelmente é um identificador de resultado retornado pela função mysql_query e não é algo que a função cache_delete possa aceitar diretamente. Aqui está um exemplo corrigido do seu código, assumindo que você está trabalhando no ambiente PAWNO: Código: mysql_format(mysql, string, sizeof string, "SELECT `Nome` FROM `contas` WHERE `Nome`='%e';", account); Lembre-se de que você só deve chamar cache_delete quando tiver concluído o uso dos resultados da consulta. Essa função libera a memória ocupada pelo cache, tornando-a disponível para outras operações. Quanto à sua pergunta sobre usar o cache_delete em consultas UPDATE, geralmente você não precisa se preocupar com isso. O cache_delete está mais relacionado a consultas SELECT que retornam resultados. Consultas UPDATE, INSERT e DELETE não lidam com conjuntos de resultados da mesma forma que as consultas SELECT, então normalmente você não precisa usar o cache_delete depois de uma operação de atualização. Espero que isso tenha esclarecido suas dúvidas! Se você tiver mais perguntas, fique à vontade para perguntar. RE: melhor forma de usar cache_delete - tylerthecreator - 26/08/2023 (26/08/2023 13:16)strelo Escreveu: Vou tentar ajudar com suas dúvidas sobre o uso do cache_delete e como aplicá-lo nos comandos SELECT e UPDATE. Obrigado à todos pelas respostas. Muito obrigado, strelo, sua resposta foi certeira para minha dúvida. RE: melhor forma de usar cache_delete - Cifra Modder - 10/12/2024 (26/08/2023 13:16)strelo Escreveu: Vou tentar ajudar com suas dúvidas sobre o uso do cache_delete e como aplicá-lo nos comandos SELECT e UPDATE. Ótima explicação! Mais e quando tem 2 consulta? Teria que criar 1 variável pra cada consulta ou poderia usar uma variável array pra armazenar cada uma e deletar o cache? RE: melhor forma de usar cache_delete - strelo - 10/12/2024 Obrigado pelo elogio! Fico feliz em poder ajudar. Respondendo à sua pergunta sobre o uso de `cache_delete` com duas ou mais consultas: 1. Variável para cada consulta: Sim, você pode criar uma variável para cada consulta e armazenar o resultado em cada uma delas. Essa abordagem é recomendada se você precisar acessar os resultados de cada consulta individualmente em diferentes partes do seu código. Exemplo: Código PHP: new result1 = mysql_query(mysql, "SELECT * FROM tabela1"); Vantagens: * Clareza: O código fica mais organizado e fácil de entender, pois cada variável representa um conjunto de resultados específico. * Flexibilidade: Permite acessar e manipular os resultados de cada consulta independentemente. Desvantagens: * Mais variáveis: Pode levar a um código um pouco mais verboso, especialmente se você tiver muitas consultas. 2. Variável Array: Também é possível usar um array para armazenar os resultados de várias consultas. No entanto, essa abordagem é menos comum e mais complexa no contexto do SA:MP e da função `mysql_query`. Por que é menos recomendado no SA:MP com `mysql_query`? * A função `mysql_query` retorna um identificador de resultado que é um valor inteiro simples, não um ponteiro para uma estrutura de dados complexa. Armazenar esses identificadores em um array não traria um benefício significativo em termos de organização ou acesso aos dados. * Você ainda precisaria gerenciar a ordem dos resultados no array e lembrar qual índice corresponde a qual consulta. * O SA:MP e o plugin MySQL tradicional não oferecem funções nativas para manipular um array de resultados de forma eficiente. Como seria (embora não recomendado): Código PHP: new results[2]; Considerações: * Se você estiver usando um plugin MySQL mais avançado que ofereça funções para trabalhar com conjuntos de resultados como objetos ou estruturas de dados mais complexas, então o uso de um array pode ser mais viável e útil. * BlueG MySQL Plugin (R41-4 e superiores): Este plugin oferece a função `mysql_query_array` que retorna um array de resultados. Neste caso específico, armazenar estes arrays em um outro array poderia fazer mais sentido. Mas observe que estas funções são específicas deste plugin, e não do plugin MySQL padrão. Conclusão: Para o uso comum do plugin MySQL no SA:MP, é mais prático e recomendado usar uma variável separada para cada consulta. Isso torna o código mais legível, facilita o gerenciamento dos resultados e evita complexidades desnecessárias. O uso de um array para armazenar identificadores de resultados `mysql_query` geralmente não traz vantagens significativas e pode tornar o código mais confuso no contexto do SA:MP. Lembre-se de sempre chamar `cache_delete` após terminar de processar os resultados de uma consulta específica para liberar a memória ocupada pelo cache. Espero que esta resposta mais detalhada tenha esclarecido suas dúvidas! Se você tiver mais perguntas, não hesite em perguntar. RE: melhor forma de usar cache_delete - Cifra Modder - 15/12/2024 (10/12/2024 10:50)strelo Escreveu: Obrigado pelo elogio! Fico feliz em poder ajudar. Totalmente entendido! +Rep! RE: melhor forma de usar cache_delete - ChicoDiabo - 21/12/2024 Uma dica nada haver com a pergunta, utilize mysql_tquery Com ele você não precisa se preocupar em limpar o cache e não vai causar atrasos no servidor Veja mais em: mysql_query ou mysql_tquery |