'username_exists' ainda retorna um ID mesmo depois de deletar o registro do banco de dados?

4

Existe algum tipo de cache de consulta do MySQL ativado por padrão ou algo assim? Eu estou tentando trabalhar em um script de importação de usuário e estou vendo alguns resultados estranhos da função username_exists depois de excluir registros da tabela wp_users . Depois que eu excluir os registros quando eu chamar username_exists Wordpress ainda está retornando o ID para o usuário excluído em vez de false . Ímpar. O que estou perdendo?

    
por Adam Christianson 29.05.2016 / 01:29

2 respostas

2

Por padrão, o WordPress usa $wp_object_cache , que é uma instância de WP_Object_Cache para economizar em viagens para o banco de dados.

Rastrear a função username_exists() , você notará que get_user_by() usa WP_User::get_data_by() que retorna os dados do usuário de $wp_object_cache imediatamente sem verificar se esse usuário existe no banco de dados. Observe que $wp_object_cache está armazenado na memória.

Isso significa que, se você excluiu um registro de usuário diretamente no banco de dados sem limpar o cache do usuário, os dados do usuário ainda estarão disponíveis. Esse é o problema.

Então, o que você está perdendo?

  1. Não foi possível excluir o usuário da maneira correta .

  2. Faltando para limpar o cache do usuário .

por MinhTri 30.05.2016 / 17:18
1

O cache pode estar em qualquer lugar, começando com o cache de requisições no lado dos componentes do mysql (é improvável que ocorra impacto neste caso), e o cache de objetos no lado do wordpress.

Provavelmente, você está fazendo algo errado no seu código, mas é sempre melhor usar a API (ou o wordpress admin como front-end) para excluir as coisas e tentar excluí-las acessando diretamente o banco de dados. Não é apenas o cache que pode lhe dar problemas, mas também meta meta e outras configurações que você não vai levar em conta.

    
por Mark Kaplun 29.05.2016 / 07:37

Tags