Uma das maiores plataformas de lojas online é sem dúvida a Magento, apesar do meu contacto com esta plataforma não ter passado de instalação e configurações iniciais, desta vez foi me pedido para analisar e solucionar um problema nesta plataforma.
Foi reportado uma instabilidade na plataforma, dificuldades de acesso, extrema lentidão em resumo algo que não é compatível com quem pretende usar a 100% da plataforma.
Motivo:
O sistema Magento, guarda as sessões dos utilizadores em ficheiros, sessões essas que neste caso, nunca foram apagadas desde que o sistema ficou online, ficando a pasta com +/- 200,000 ficheiros.
Tentou-se eliminar os ficheiros via FTP, via FileExplorer dentro do Plesk mas devido ao numero elevado de ficheiros tornava qualquer ideia um fiasco.
Ainda surgiu a possibilidade de um acesso por terminal, mas a empresa de alojamento não cedeu acessos em tempo útil.
Tentei ainda usar um ficheiro .php com a função unlink que já resolveu outros casos, mas ao requisitar o ficheiro, o próprio browser entrava em colapso.
Solução:
Ao fim de todas estas tentativas frustradas, surge a solução repartida em duas partes:
- ficheiro .php para ser invocado pelo browser
- ficheiro .py para executar a acção de remover dentro do servidor (S.O. Linux)
Nota: Deixo apenas as linhas gerais dos ficheiros iniciais, no fim deixo o download de versões melhoradas.
Nota 2: Não me responsabilizo pelo uso destes ficheiros indevidamente ou sem saber o que está a fazer.
Fazer upload para a pasta de root_site (www, http_docs, ...)
1 2 3 4 5 6 7 8 9 10 11 | <?php // mag_session_rm.php simplified // Retorn path real do servidor $fp = realpath(dirname(__FILE__))."/var"; // Confirma que o ficheiro python esta na pasta "var" if(file_exists($fp."/session_rm.py")){ // Troca para o pasta "var" chdir($fp); // Executa o shell_exec para iniciar rm_sessions.py shell_exec("python session_rm.py"); } |
Fazer upload para a pasta root_site/var
1 2 3 4 5 6 7 8 | """ USE THIS SCRIPT CAREFULLY - mag_session_rm.py """ #!/usr/bin/python import os # Chama as funções de sistema operativo para remover os.popen("rm -f ./session/*") |
O caminho que pretendemos afetar fica em root_site/var/sessions
Fiz ficheiros em locais diferentes, para tentar minimizar tentativas de acessos/adulteração dos ficheiros.
Por fim pelo browser aceder ao url do site ex: www.lojaonline.com/mag_session_rm.php
Aguardar uns segundos/minutos dependendo da quantidade de ficheiros e em pouco tempo a sua loja Magento está de novo em pleno.
[Download] Neste ficheiro vai encontrar os dois ficheiros, mas o de php tem implementado um formulário onde pede uma password que deve ser definida pelo leitor.
Obrigado pela atenção
[Download] Neste ficheiro vai encontrar os dois ficheiros, mas o de php tem implementado um formulário onde pede uma password que deve ser definida pelo leitor.
1 20 21 22 | <?php // Minimal Security - SHA1 Password // Get One in www.sha1-online.com $safePasswd = "22bf5d4a65ff0792ed773c17fa7178ed1cf76aa6"; |
Obrigado pela atenção