News:

SMF 2.1.4 has been released! Take it for a spin! Read more.

Main Menu

Remoção de Membros

Started by Darkness_Black, January 19, 2016, 07:04:21 PM

Previous topic - Next topic

Darkness_Black

Boa noite galera, ainda continuo com a grande manutenção do meu fórum.
Agora chegou a parte de remoção de membros antigos, tenho 1680965 Membros no fórum, porém muitos destes criaram cadastros e não retornaram mais nesses 8 anos de fórum, outros esqueceram suas contas antigas e criaram uma nova.
O problema é que tentei usar a ferramenta do SMF para remoção de membros que não se logam hà mais de 2 anos e no fórum informa que foi executado com exito, muito rápido por sinal devido essa grande quantidade de membros, más ao verificar a quantidade de membros no fórum e na tabela smf_members mostra que nenhum registro foi apagado. Então creio que essa ferramenta não está funcionando em meu fórum.
Queria saber se conhecem outra solução pra executar essa tarefa, ou mesmo se eu for executar diretamente no banco de dados qual seria o procedimento? Só a tabela SMF_members que preciso limpar ou tem outra que eu preciso limpar para não dar conflito?
Aguardo a ajuda de vocês.

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

Não mexas directamente na BD ;) Há muitos campos ligados.

Podes experimentar com este MOD
http://custom.simplemachines.org/mods/index.php?mod=2569

Ou podes experimentar este:
http://custom.simplemachines.org/mods/index.php?mod=3849
Que te permite apagar os membros automaticamente
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black

Vou tentar aqui a segunda opção, porque antes de postar aqui, testei essa primeira opção e dá na mesma, até por que ele nada mais faz que apenas acrescentar algumas informações para remoção más a ferramenta não funcionou.

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

Darkness_Black

Boa noite, vou testar o mod, más gostaria de compartilhar a tradução que fiz para esse mod caso alguém precise.

<?php

/*
 * email Inactive Users
 *
 * @package eiu mod
 * @version 1.1.1
 * @author Jessica González <[email protected]>
 * @Translator Portuguese Brazilian: Darkness_Black
 * @copyright Copyright (c) 2014 Jessica González
 * @license http://www.mozilla.org/MPL/2.0/
 */

global $txt;

$txt['eiu_enable'] = 'Habilitar Mod';
$txt['eiu_enable_sub'] = 'A configuração mestre, precisa estar ligado para que o mod possa trabalhar.';
$txt['eiu_disable_removal'] = 'Desativar a supressão do recurso de usuários';
$txt['eiu_disable_removal_sub'] = 'Se marcado, o mod só irá enviar e-mails para os usuários que atendem aos critérios, mas não irá excluí-los, após o período de graça acabar e se o usuário não tiver logado , no entanto, o mod irá considerá-los novamente para outra mail.';
$txt['eiu_title'] = 'Enviar e-mail para Usuários Inativos';
$txt['eiu_general'] = 'Configurações Gerais';
$txt['eiu_list'] = 'Lista de Usuários';
$txt['eiu_list_title'] = 'Usuários marcados para exclusão';
$txt['eiu_list_title_potential'] = 'Usuários marcados para uma potencial exclusão';
$txt['eiu_list_will_be_deleted'] = 'Serão excluídos';
$txt['eiu_list_noUsers'] = 'Serão excluídos não existem quaisquer usuários marcado para potencial eliminação';
$txt['eiu_list_name'] = 'Nome';
$txt['eiu_list_login'] = 'Último login';
$txt['eiu_list_mail'] = 'enviar email';
$txt['eiu_list_delete'] = 'Marcar para exclusão';
$txt['eiu_list_dont_delete'] = 'Não Excluir';
$txt['eiu_list_posts'] = 'Posts';
$txt['eiu_list_send'] = 'Enviar';
$txt['eiu_deleted'] = 'Você marcou com sucesso estes usuários para exclusão, da próxima vez que a tarefa agendada for executada, esses usuários serão excluídos.';
$txt['eiu_dont'] = 'Você marcou com sucesso esses usuários como intocáveis, o mod não vai marcá-los novamente para exclusão.';
$txt['eiu_desc'] = ' Este é o seu painel principal administrador de e-mail para o mod de usuários inativos. <br/> Este mod irá adicionar uma tarefa agendada, onde os usuários que não se logaram em x dias será enviado um e-mail personalizado, em seguida, um período de carência começa e se o usuário não tiver sido registrado no período após a série fica marcado para exclusão, o administrador, em seguida, avança para marcá-los para exclusão, usuários marcado para exclusão será apagados na próxima vez que a tarefa agendada for executada, você pode configurar quantos dias.<br /> O mod usa a fila de email, se você tem uma fila de email grande, é aconselhável definir um grande número de dias de espera antes da eliminação, isso é porque o período de tempo de eliminação começa a contar depois que o administrador tenha definido uma conta para exclusão e não após o mail ser enviado então é possível que a conta seja excluída antes de obter o e-mail.<br /> A opção "não excluir" permite que você remova permanentemente um usuário de ficar excluído por este mod mesmo se o usuário está em conformidade com todos os outros requisitos.<br />';
$txt['eiu_inactiveFor'] = 'Quantos dias desde seu último log in para receber o e-mail .';
$txt['eiu_inactiveFor_sub'] = 'Em dias, se nenhum valor for definido, o mod irá utilizar o valor padrão: 15';
$txt['eiu_sinceMail'] = 'Quantos dias desde que o usuário foi marcado para exclusão';
$txt['eiu_sinceMail_sub'] = 'Em dias, ele começa a contar depois que o administrador tenha definido uma conta para exclusão. se nenhum valor for definido, o mod irá utilizar o valor padrão: 15';
$txt['eiu_groups'] = 'selecionar os grupos que serão afetados por este mod';
$txt['eiu_groups_sub'] = 'Esta é uma caixa de seleção múltipla, apenas os usuários que têm os grupos selecionados como grupos primários ou secundários seriam afetados pelo mod, o grupo padrão do administrador não pode ser selecionado.';
$txt['eiu_message'] = 'O corpo da mensagem';
$txt['eiu_message_sub'] = 'Você pode usar os seguintes caracteres curinga:<br />
{user_name} será convertido em seu nome real<br />
{display_name} será convertido para o nome de exibição do usuário.<br />
{last_login} irá mostrar-lhes a data da sua última sessão iniciada.<br />
{forum_name} irá imprimir o nome do seu fórum<br />
{forum_url} imprimirá url do seu fórum<br />
Se nenhum valor for definido, o mod vai usar a mensagem padrão .'
;
$txt['eiu_subject'] = 'O assunto para o e-mail';
$txt['eiu_subject_sub'] = 'Não é possível usar HTML aqui, se deixar vazio o mod irá utilizar o valor padrão.';
$txt['eiu_posts'] = 'Mínimo de posts';
$txt['eiu_posts_sub'] = 'O número de mensagens que o usuário fez, se um usuário tiver mais mensagens do que esse(s) limite(s) ele não será considerado pelo mod.<br />Se for deixado vazio, o mod irá utilizar o valor padrão: 5.';
$txt['eiu_custom_message'] = 'Olá {user_name} Nós sentimos sua falta no {forum_url} e nós gostariamos que você volte e nos diga um oi novamente.';
$txt['eiu_custom_subject'] = 'Olá de {forum_name}.';

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

Darkness_Black

Deu erro na instalação, deixou o fórum fora do ar.

Connection Problems

Sorry, SMF was unable to connect to the database. This may be caused by the server being busy. Please try again later.

Por que o mod mexe na tabela members, e qualquer mod que mexe nessa tabela dá erro e não instala acho que por ela ser muito pesada. 1,1 GB

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

Darkness_Black

Vou tentar instalar manualmente esse mod más quando chega neste arquivo:

hooks.php
This file should be able to execute standalone.

Como faço para executar arquivos assim? Dentro deste mod tem esse arquivo e fala que ele deve executar sozinho, más se eu for instalar manualmente como rodo este arquivo?

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

Quote from: Darkness_Black on January 19, 2016, 09:33:07 PM
Por que o mod mexe na tabela members, e qualquer mod que mexe nessa tabela dá erro e não instala acho que por ela ser muito pesada. 1,1 GB
1,1Gb só na tabela smf_members? Ou no total da BD? Quantos membros tem essa tabela?
Ainda assim, isso deve ser o teu MySQL a "morrer". A alteração não é assim tão pesada, creio que devas ponderar procurar um host melhor... Aliás, poderá ser por isso que a tarefa de manutenção do fórum que te permite remover os utilizadores falha...

Em relação à tua questão:
Quote from: Darkness_Black on January 20, 2016, 09:57:21 AM
Vou tentar instalar manualmente esse mod más quando chega neste arquivo:

hooks.php
This file should be able to execute standalone.

Como faço para executar arquivos assim? Dentro deste mod tem esse arquivo e fala que ele deve executar sozinho, más se eu for instalar manualmente como rodo este arquivo?
Carrega o ficheiro por FTP para a pasta do SMF (onde está o SSI.php) e corre-o pelo browser. Ex: www.o-teu-forum.com/hooks.php
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black

Quote from: margarett on January 20, 2016, 08:09:27 PM
Quote from: Darkness_Black on January 19, 2016, 09:33:07 PM
Por que o mod mexe na tabela members, e qualquer mod que mexe nessa tabela dá erro e não instala acho que por ela ser muito pesada. 1,1 GB
1,1Gb só na tabela smf_members? Ou no total da BD? Quantos membros tem essa tabela?
Ainda assim, isso deve ser o teu MySQL a "morrer". A alteração não é assim tão pesada, creio que devas ponderar procurar um host melhor... Aliás, poderá ser por isso que a tarefa de manutenção do fórum que te permite remover os utilizadores falha...

Em relação à tua questão:
Quote from: Darkness_Black on January 20, 2016, 09:57:21 AM
Vou tentar instalar manualmente esse mod más quando chega neste arquivo:

hooks.php
This file should be able to execute standalone.

Como faço para executar arquivos assim? Dentro deste mod tem esse arquivo e fala que ele deve executar sozinho, más se eu for instalar manualmente como rodo este arquivo?
Carrega o ficheiro por FTP para a pasta do SMF (onde está o SSI.php) e corre-o pelo browser. Ex: www.o-teu-forum.com/hooks.php
Minha bd tem 6GB só de membros 1.1 gb quase 2 milhoes de membros.
Quanto ao erro de não excluir membros só acho estranho que não dá erro nenhum quando executa a função, simplesmente em segundos dá o retorno que foi executado com sucesso.

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

Darkness_Black

Pensei em criar um fórum novo somente com as tabelas que envolvem membros para que eu possa tentar usar a ferramenta de limpeza de membros em um fórum limpo.
Se eu for fazer isso quais tabelas eu teria que pegar do fórum principal para o fórum limpo?

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

Desculpa a ausência, tenho vindo ao fórum só no telemóvel, o trabalho dá cabo de mim :)

2 milhões de membros? Porra... :0

Tenho de olhar para o código a ver como é que a operação é feita. Do telemóvel não dá jeito nenhum :P
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

margarett

OK, finalmente consegui olhar para isto.
Não há nada no código que descarte silenciosamente o erro na operação, pelo menos na parte da manutenção do fórum. Por isso só há 2 hipóteses:
a) a combinação de grupos de membros, dias a remover, acção, etc, resulta numa lista vazia de membros
ou
b) a função de remoção de membros (que vem de outra parte do código) é que descarta silenciosamente a "coisa"

Abre o ficheiro Sources/ManageMaintenance.php, encontra:
require_once($sourcedir . '/Subs-Members.php');
deleteMembers($members);

E adiciona antes:
echo '<pre>';
print_r($members);
die;

Depois corre novamente a opção de remover os membros. A página vai ficar em branco, apenas com uma lista dos IDs seleccionados para remover. Por isso, ou te vai aparecer uma coisa assim:
Array
(
    [0] => 7
    [1] => 8
)

(com mais ou menos entradas, mas não interessa)
ou assim:
Array
(
)

Se for este o caso, então dá-se o caso de a selecção de membros resultar em nada para remover.

Testa e avisa o resultado ;)
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black

Ok obrigado pela ajuda, vou testar e volto com o resultado.

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

Darkness_Black

Oi Margarett, testei, e você é um gênio, devia concorrer a dono do SMF rsrsrs.
Pois bem, realmente mostra-me uma lista infinita deu até looping no navegador, por que são mais de 1 milhão e 800 mil membros então era de se esperar uma lista imensa. Só não posto aqui por que é muita gente más de-me uma lista igual a que você postou:
Array
(
    [0] => 7
    [1] => 8
)


Agora a questão é como faço pra remove-los?
Pois está comprovado que é a ferramenta do SMF que não está funcionando.

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

1 milhão e 800 mil?! Porra, não estou habituado a números tão grandes...
Deixa-me ver o que fazer a seguir..
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black

Sim veja você mesmo em anexo.
Afinal o fórum tem mais de 8 anos.

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

OK, se a rotina de recolher os IDs funciona, então é a parte de os eliminar que falha.
Só para eu perceber quantos é que a função ia eliminar, transforma aquele código que te dei para adicionar nisto:
echo '<pre>';
echo count($members);
//echo '<br>';
//print_r($members);
die;

E volta a correr a operação de remover membros. Agora não vai mostrar essa lista imensa, vai só mostrar um número.
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black

Boa tarde Margarett
Se colocar para não logados em 2 anos dá 1122648
Se colocar para não logados em 3 anos dá 745587
Se colocar para não logados em 4 anos dá 188625

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

Para já vamos experimentar limitar o número de utilizadores que serão limpos em cada operação.
Encontra:
[code] // Select all the members we're about to murder/remove...
$request = $smcFunc['db_query']('', '
SELECT mem.id_member, IFNULL(m.id_member, 0) AS is_mod
FROM {db_prefix}members AS mem
LEFT JOIN {db_prefix}moderators AS m ON (m.id_member = mem.id_member)
WHERE ' . $where,
$where_vars
);
[/code]
Substitui por:
// Select all the members we're about to murder/remove...
$request = $smcFunc['db_query']('', '
SELECT mem.id_member, IFNULL(m.id_member, 0) AS is_mod
FROM {db_prefix}members AS mem
LEFT JOIN {db_prefix}moderators AS m ON (m.id_member = mem.id_member)
WHERE ' . $where,
$where_vars .'
LIMIT 100'
);

E claro, remove o outro código que te dei. A operação deve remover apenas 100 utilizadores. Testa sdd
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black

Não funcionou, deu o mesmo erro, ele executa e rapidamente mostra como concluído más nenhum membro foi excluído.

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

Raisparta...

OK, vamos passar ao outro ficheiro. Anexa-me p.f. o Sources/Subs-Members.php
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black


Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

* @version 2.1 Beta 2
?

Estás a usar o SMF 2.1 Beta?
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black

Sim.
Más esses erros já vinham do 2.0.11 por isso postei aqui.

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

Ok, é só para eu tentar perceber. Agora é fim de semana, assim que puder dou-te mais algum código de debug ;)
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

margarett

Experimenta com o ficheiro em anexo. Deve continuar a fazer o mesmo (ou seja, nada :P ) mas no final da operação vai ao registo de error do SMF, deve aparecer lá a informação "return1", "return2", ou "return3"
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Darkness_Black

Não apareceu, na verdade quando ativei (antes de executar a ferramenta) me veio milhares de erros.
Ele é grande então vou fazer upload dele.
https://drive.google.com/open?id=0B8ZzO2aTHph8X2Jwdm00a29jNlk

Translator - Brazilian

Não respondo MP de ajuda, Poste sua duvida no forum!!! Se alguém te Ajudou Agradeça!!!

margarett

Não consigo abrir o ficheiro, pede uma autorização qualquer...
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Advertisement: