hipnos na area Postado Novembro 9, 2012 Denunciar Share Postado Novembro 9, 2012 (editado) Obs.: Esse erro só ocorre em versões do PHP inferiores ao 5.3.4.Estou testando em uma máquina com PHP_5.3.0 e em outra máquina com o PHP_4.1.1.Preciso que o código funcione independente da versão do PHP.Estou criando um sistema de backup para erros no código da página (acaso ocorra)Ao tentar "copiar" um arquivo com apenas um requisição, funciona tudo normalmente:<?php //gerar_log.php $p = 'erros/'.$arqErr; $o = 'temp/'.$arqErr; if(file_exists($o) && is_readable($o) && is_writable($o)){ if(!copy($o,$p)){ echo 'Não foi possivel mover "',$p,'" para "',$o,'"'; } if(file_exists($o) && is_readable($o) && is_writable($o)){ unlink($o);//remove temporário } } ?> Porém fui simular múltiplas requisições [teste_conexoes.html]: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="pt-br"> <head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> <title>Teste multiplas conexoes</title> <script type="text/javascript" src="js/jquery-1.8.1.min.js"></script> <script type="text/javascript"> function teste(z){ $.ajax("gerar_log.php="+(new Date().getTime()),{"success":function(data){ $("<div></div>").addClass("sty").html(data).appendTo("body"); }); } </script> <style> .sty{ border:1px #000 solid; overflow:auto; margin:5px 0 0 5px; } </style> </head> <body> <p><a href="teste_conexoes.html">Novo teste</a></p> <script type="text/javascript"> var dd = ""; for(var i=0;i<10;i++){ dd += "teste(\"#a"+(i+1)+"\");\n"; } eval(dd); </script> </body> </html>E nisso ás vezes nessa parte !copy($o,$p) ocorre o sequinte erro:Warning: Unable to open 'temp/6039dd66559c9431004109202d279557.php' for reading: No such file or directory in gerar_log.phpE as vezes na nessa parte: unlink($o); ocorre o seguinte erro:Warning: Unlink failed (No such file or directory) in gerar_log.phpObservem que usei as funções: file_exists, is_readable e is_writable e mesmo assim ocorrem esses erros. Editado Novembro 9, 2012 por hipnos na area Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Novembro 10, 2012 Denunciar Share Postado Novembro 10, 2012 Guilherme,Esse provavelmente não se trata de erro e sim uma implementação do PHP.Por motivo de desempenho, o PHP mantem um cache das informações retornadas pelos métodos is_readable() , is_file() entre outros.Utilize a função clearstatcache() para limpar as informações que o PHP mantem sobre um arquivo. <?php //gerar_log.php $p = 'erros/'.$arqErr; $o = 'temp/'.$arqErr; if(file_exists($o) && is_readable($o) && is_writable($o)){ if(!copy($o,$p)){ echo 'Não foi possivel mover "',$p,'" para "',$o,'"'; } if(file_exists($o) && is_readable($o) && is_writable($o)){ unlink($o);//remove temporário } } clearstatcache(); ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 hipnos na area Postado Novembro 10, 2012 Autor Denunciar Share Postado Novembro 10, 2012 (editado) Romero Dias, eu havia esquecido de fechar alguns Resources (handles abertos por fopen), por isso copy falhava, porém o unlink continuou tendo o erro, e o clearstatcache resolveu meu problema.Pode marcar como RESOLVIDO, por que agora está 100%Muito obrigado. Editado Novembro 11, 2012 por hipnos na area Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
hipnos na area
Ao tentar "copiar" um arquivo com apenas um requisição, funciona tudo normalmente:
Porém fui simular múltiplas requisições [teste_conexoes.html]:E nisso ás vezes nessa parte !copy($o,$p) ocorre o sequinte erro:
E as vezes na nessa parte: unlink($o); ocorre o seguinte erro:
Observem que usei as funções: file_exists, is_readable e is_writable e mesmo assim ocorrem esses erros.
Editado por hipnos na areaLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.