Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG certificado sendo removido mesmo em operações concorrentes #117

Closed
robmachado opened this issue May 20, 2017 · 5 comments
Closed

BUG certificado sendo removido mesmo em operações concorrentes #117

robmachado opened this issue May 20, 2017 · 5 comments
Assignees
Labels

Comments

@robmachado
Copy link
Contributor

A Classe SOAP requer os certificados em arquivo para usar, a SoapBase::class cria esses arquivos de forma temporária e depois os remove. Mas quando existem operações concorrentes com o mesmo certificado (mesmo CNPJ) pode ocorrer de uma operação remover os certificados que seriam usados em outra.

@robmachado robmachado self-assigned this May 20, 2017
@robmachado robmachado added the bug label May 20, 2017
robmachado added a commit that referenced this issue May 20, 2017
[UPD] ISSUE #117 Corrigido o BUG que deletava certificados em uso
@tavinus
Copy link

tavinus commented Nov 30, 2017

Olá, eu estava debugando outro problema e notei que na real vocês estão recriando os certificados toda vez que tem uma chamada pro web-service com a função send().

Ou seja, se mantiver o objeto Tools e fizer mais de uma chamada send() os certificados serão recriados e os antigos ficarão na pasta tmp sem uso e sem deletar.

edit: Se rodar o script depois de 45min vai deletar os arquivos antigos, mas obviamente vão sobrar mais 3 arquivos novamente pra cada chamada send() extra. Pensando em um uso real com diversas chamadas (duplas) por hora, cada uma sobrando 3 arquivos e mantendo eles por 45minutos ficaria sempre um monte de arquivos de certificados lá, mas ao menos o "deletar 45min" não deixa ocupar o HDD inteiro com as duplicatas de certificados. Pois em um servidor com uso pesado de send() com certeza iria entopir o HDD rapidamente se não tivesse esse delete dos últimos 45min!

A solução que eu encontrei foi mover a chamada $this->saveTemporarilyKeyFiles() para o construtor da classe SoapCurl e remover do método send(). Assim conseguimos manter e reutilizar os certificados e também todos os certs usados serão excluídos ao final da execução (antes só excluia os certs da última chamada).

Fato que como os arquivos são deletados no destrutor da classe, faz sentido que eles sejam criados no construtor também.

Mais infos na minha resposta da outra issue citada acima:
#141 (comment)

PS: Desculpa a confusão de postar em dois lugares mas notei depois que na real isso devia vir pra essa issue aqui.

@robmachado
Copy link
Contributor Author

@tavinus Obrigado realmente e solução é a mais indicada. Vamos promover essa melhoria !

@robmachado
Copy link
Contributor Author

robmachado commented Dec 3, 2017 via email

@lpj145
Copy link
Contributor

lpj145 commented Dec 3, 2017

Fico feliz que se encontra, e triste pelo problema, minha familía é pobre, mas herdamos essa triste herança do calculo renal kkk ... gostaria de te falar que encontrei uma saída no próprio php na extensão do curl, porém que ainda não foi implementada, se puder, da uma olhadinha no gitter depois, fiz vários comentários sobre lá no grupo do sped-common, o que acha de criarmos um grupo no telegram ? é uma plataforma muito dinamica, e coisas mais urgentes podemos tratar melhor do assunto.

@lpj145
Copy link
Contributor

lpj145 commented Dec 3, 2017

https://t.me/joinchat/GE_IWhFZh3ufRIBGKahaog aqui o grupo do telegram

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants