|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2006 Messages : 17 ![]() |
J'ai besoin de mettre à jour régulièrement une page html statique (data.html), stockée dans un dossier cache. Une méthode simple consisterait à générer un fichier temporaire data.tmp dans le même répertoire que data.html et d'effectuer ensuite un rename('data.tmp', 'data.html').
Visiblement, sous unix ça ne doit pas poser de problème d'après ce que j'ai lu dans la doc PHP. Le renomage est IMMEDIAT, data.html reste TOUJOURS accessible. L'utilisateur qui demande la page data.html ne risque donc pas alors d'obtenir une page tronquée ou un 404 ? Sous windows c'est un autre problème, puisque rename apparement ne fonctione pas si le nouveau nom du fichier correspond à un fichier déjà existant. Est-ce qu'il existe une alternative ou une méthode plus efficace qui me permette de mettre à jour data.html sachant que la page doit toujours être accessible ? Merci d'avance |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Bonjour,
Tu es sous Windows ou sous *nix ? Qu'entends-tu par "la page doit toujours être accessible" ? Pourquoi ne pas modifier directement le fichier sans passer par un temporaire ? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2006 Messages : 17 ![]() |
Tu es sous Windows ou sous *nix ?
Je bosse sous windows pour mon dev (Apache2, PHP5 en module) mais la version publique du site tourne sous unix. Qu'entends-tu par "la page doit toujours être accessible" ? Le site reçoit beaucoup de visites et la page data.html doit toujours etre accessible par les utilisateurs même pendant sa mise à jour. Il ne faut pas qu'il tombe sur un 404 ou une page tronquée (donc qui s'affiche pas ou mal). Pourquoi ne pas modifier directement le fichier sans passer par un temporaire ? Le fichier data.html met un certain temps pour être généré (plusieurs secondes car divers sources parsées, d'où la nécessité de passer par une page statique en cache), donc si je le modifie directement, le risque est que des utilisateurs qui demandent ce fichier se retrouvent avec un fichier en cours de modification, d'où des erreurs, problèmes d'affichage, etc... Je pourrai utiliser flock mais ça revient au même puisque la page ne sera pas disponible. |
|
|
00
|
|
|
#4 | ||
|
Membre chevronné
![]() Développeur Web Inscription : décembre 2004 Messages : 636 ![]() |
Citation:
Citation:
Je pige pas ce qui te soucie ... Bon, sinon, une suggestion : puisque ta page en html statique est appelée à etre modifiée souvent, il pourrait être interessant de la rendre dynamique, (par exemple avec PHP), non ? Avec un peu d'immagination, ton problème de lenteur de génération de la page doit facilement pouvoir être contourné. Enfin, moi si je dis ça, c'est juste pasqu'on est dans le forum PHP et que PHP est justement fait exprès pour ça, après ...
__________________
Ne cliquez pas sur ce lien |
||
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : mai 2006 Messages : 17 ![]() |
@Hervé Saladin
A propos d'unix et de rename, je demandais juste une confirmation, un éclairsissement, à savoir si effectivement avec un simple rename l'utilisateur qui demande la page data.html ne risquait pas d'obtenir une page tronquée ou eronée. Pour être plus précis, l'utilisateur demande la page data.html, la requette est envoyée au serveur, le serveur commence à envoyer la page mais au même instant le fichier est mis à jour avec rename. Que ce passe-t'il ? L'utilisateur reçoit un premier bout de data.html (ancienne version) puis un bout de data.html (nouvelle version), donc j'imagine que c'est problèmatique, ou il reçoit d'un coup soit l'ancienne version, soit la nouvelle version ? (je sens que je vais avoir un p'tit cours sur le transport de fichiers )Citation:
|
|
|
|
00
|
|
|
#6 | |
|
Membre chevronné
![]() Développeur Web Inscription : décembre 2004 Messages : 636 ![]() |
Citation:
N'importe quel OS digne de ce nom est capable de gèrer les accès concurrents à un fichier, ça ne devrait pas poser de problème.
__________________
Ne cliquez pas sur ce lien |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com