Tom's Guide > Forum > Programmation > [Résolu] Erreur de la Function Filemtime() - PHP

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

Forum Programmation : [Résolu] Erreur de la Function Filemtime() - PHP

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !

Lire la meilleure réponse, apportée par SiM07.

Mot :    Pseudo :           
 

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:

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




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

Merci

Cordialement.

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.

Code :
  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

Code :
  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 ;)

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.
Meilleure réponse

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.

Code :
  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

Code :
  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 ;)

Répondre à SiM07

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 !

Répondre à Fil0u69

Pour passer en résolu, il suffit de sélectionner la meilleur réponse ;)

Et oui un ! peut tout changer !

Répondre à SiM07
Tom's Guide > Forum > Programmation > [Résolu] Erreur de la Function Filemtime() - PHP
Aller à :

Il y a 2323 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens