Résolu Erreur de la Function Filemtime() - PHP

Solutions (3)
Tags :
  • Cache
  • Link
  • Php
  • Programmation
|
Bonjour,

J'ai depuis quelque temps, après l'ajout d'un mod sur mon forum punbb, une erreur viens embêter chaque topic.

L'erreur est:

Citation :
Warning: filemtime() [function.filemtime]: stat failed for check_link/liens-1120.html in /home/www/forums/viewtopic.php on line 687


La fonction filemtime est belle et bien activé sur mon serveur.

Le bout de code de filemtime dans viewtopic.php est:

  1. <h3><?php if (($post_count + $start_from) > 1) echo ' Re: '; ?><?php echo pun_htmlspecialchars($cur_topic['subject']) ?></h3>
  2.  
  3. <div class="postmsg">
  4.  
  5. <?php
  6. $cache = 'check_link/liens-'.$id.'.html';
  7. $temps= time() -3600*24*15 ; // valable 15 jour
  8.  
  9. if(!file_exists($cache) && filemtime($cache) > $temps)
  10. {
  11.  
  12.  
  13.  
  14.  
  15. if (
  16. preg_match('#http://(www)?(.)?megaupload.com/(fr/)?\?d=[a-zA-Z0-9]{8}#isU', $cur_post['message'],$link)
  17. OR preg_match('#<a href="http://dl.free.fr/getfile.pl" rel="nofollow" target="_blank">http://dl.free.fr/getfile.pl</a>\?file=(.)?(/)?[a-zA-Z0-9]{8}#isU', $$cur_post['message'],$link)
  18. OR preg_match('#http://(www.)?rapidshare.com/files/[0-9]{9}/(.*)("|\')#isU', $cur_post['message'],$link)
  19. OR preg_match('#http://(www\.)?zshare\.net/(video|download)/[A-Z0-9]{16}(/)?#isU', $cur_post['message'],$link)
  20. OR preg_match('#http://(.*)megashares.com/\?d01=([a-zA-Z0-9]{7})#isU', $cur_post['message'],$link)
  21. )
  22.  
  23. {
  24. $tester_lien = new check($link[0]) ;
  25. $tester_lien->voir_statut();
  26.  
  27. if($tester_lien -> getDead())
  28. {
  29. $destinataires = array();
  30. $destinataires[] = 2 ;
  31.  
  32.  
  33.  
  34.  
  35. $p_subject = addslashes('le lien de : "'.pun_htmlspecialchars($cur_topic['subject']).'" est mort');
  36. $p_message = addslashes('Bonjour, un de vos liens viens d\'être détecter comme mort !
  37.  
  38. <a href="viewtopic.php?id='.$id.'">Voici le lien du topic</a>');
  39. $robot = 'Link Detective';
  40. $smilies =true;
  41. foreach ($destinataires as $dest)
  42. {
  43. $db->query('INSERT INTO '.$db->prefix.'messages (owner, subject, message, sender, sender_id, sender_ip, smileys, showed, status, posted)
  44. VALUES(\''.$dest.'\', \''.$p_subject.'\', \''.$p_message.'\', \''.$robot.'\', \'\', \'\', \''.$smilies.'\', \'0\', \'0\', \''.time().'\' )') or error('Impossible d\'envoyer le message.', __FILE__, __LINE__, $db->error());
  45.  
  46. $new_mp = $db->insert_id();
  47. } // boucle
  48.  
  49. } //fin de la condition : lien invalide
  50. } // fin de la condition : verifier lien
  51.  
  52.  
  53. } //fin du cache



Je suis totalement pommé, si quelqu'un pourrai me venir en aide si vous plait, cela serais TOP ! :) 

Merci

Cordialement.
Contenus similaires
Meilleure solution
partage
, Ex-AdMiN |
Il s'agit de code de punbb de base ça ? Ils ont mis un gros système de cache on dirait :) 

Perso la ligne 9 me choque et semble pas super logique.

  1. if(!file_exists($cache) && filemtime($cache) > $temps)


Donc admettons qu'on est le fichier de cache, alors file_exists() renvoit true, on prend l'inverse donc false et on va même pas évaluer la condition suivante. En revanche, si il n'y a pas le cache alors là on va évaluer la condition suivante et demander la date de dernière modification d'un fichier qui n'existe pas ... WARNING :D 

Je pencherais donc plus pour

  1. if(file_exists($cache) && filemtime($cache) > $temps)


En tout cas la première chose que je testerais.


PS : Merci de répondre à ma première question pour ma culture perso, merci ;) 
  • Commenter cette solution |
Score
0
òh
òi
, Ex-AdMiN |
Pour passer en résolu, il suffit de sélectionner la meilleur réponse ;) 

Et oui un ! peut tout changer !
  • Commenter cette réponse |
Score
0
òh
òi
|
Alors la chapeau, plus d'erreur.

Juste a cause d'un "!" ... =/

Oui c'est bien du code punbb. ;) 

Merci beaucoup.
Je vois si tout est ok pour fermer la discussion.

Merci beaucoup de votre aide SiM07 !
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS