Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2006, 16h18   #1
Invité de passage
 
Inscription : mai 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 17
Points : 2
Points : 2
Par défaut [SQL] Modifier un fichier HTML statique en cache avec rename()

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
warpyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 16h51   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
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 ?
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 18h31   #3
Invité de passage
 
Inscription : mai 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 17
Points : 2
Points : 2
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.
warpyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 18h40   #4
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Citation:
Envoyé par warpyou
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
Citation:
Envoyé par warpyou
la version publique du site tourne sous unix.
Euuuh, ben c'est bon alors, non ?
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
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 19h45   #5
Invité de passage
 
Inscription : mai 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 17
Points : 2
Points : 2
@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:
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 ...
Elle est modifiée toutes les heures, la rendre dynamique n'apporterait qu'une surcharge inutile au serveur à raison de + de 1000 requettes par heure, donc autant qu'elle soit statique en cache. Sans rentrer dans les détails, mon script principal fonctionne sur le parsing de nombreux flux RSS et les requêtes SQL qui suivent derrière sont assez conséquentes et bien optimisées (jointures multiples etc...)
warpyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2006, 10h32   #6
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Citation:
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 ?
A mon avis, la réponse sera "d'un coup soit l'ancienne version, soit la nouvelle version".
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
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h32.


 
 
 
 
Partenaires

Hébergement Web