Faire un script php pour appliquer un patch

Petit nouveau ! | 2 Messages

02 oct. 2009, 15:42

Bonjour à tous,

C'est la première fois que je poste ici, donc ne me mangez pas ... j'espère que je suis dans la bonne section du forum.

Je viens ici parce que je rencontre un problème au niveau du dévelopement d'une application PHP, et j'aimerais avoir vos avis pour continuer. J'ai déjà pas mal cherché de l'info sur mon problème (google est mon ami) mais ça n'a pas vraiment porté ses fruits.

Donc voici le problème. Je travaille sur une application PHP qui est un CMS open-source (bilboplanet.org pour ceux qui connaissent). Ce que je voudrais ajouter à mon application, c'est un méchanisme qui permette aux utilisateurs de mettre à jour leur version de l'application sans devoir refaire toute une installation, donc simplement en appliquant un patch. (Il ne s'agirait évidement que de résolutions de bugs ... pour les grosses modifications je compte garder le système de la ré-installation complète, en tout cas pour le moment).

Comment ça marche? Lorsque l'utilisateur se connecte à son panneau d'admin, il voit qu'une nouvelle version est dispo, il télécharge le patch ... (et c'est là que les romains s'empoignèrent) et maintenant on applique le patch ....
Le truc c'est que pour appliquer le patch je ne vois pas trop comment m'y prendre. J'ai bien pensé à la solution de la commande shell, mais je ne peux pas partir du principe que tout le monde utilise Linux, donc il me faut une solution cross-platteforme.

L'autre problème, c'est comment ça va se passer au moment où je vais envoyer un patch qui modifie le script de mise-à-jour ... comment se comporte PHP? Est-ce qu'on peut modifier le fichier qui est en train d'être exécuté? ... bref, c'est un autre question que je me pose.

Je suis certain que je ne suis pas le seul à vouloir programmer ce genre de script, mais malheureusement je ne trouve que peu d'aide pour ce cas là, donc si vous avez des conseils ça m'intéresse. Si j'ai pas été assez clair dans mon explication, n'hésitez pas à me demander de préciser certains points.

En vous remerciant
Bonne journée

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 oct. 2009, 19:53

Bonjour,

Le script de forum SMF a un fonctionnement similaire à celui que tu souhaites obtenir et il est open-source, donc peut être pourras-tu t'en inspirer.

Une idée de mise en oeuvre serait que pour chaque update de version tu indiques les fichiers qui ont changés et que ton script d'update ne télécharge (et écrase) que les fichiers à mettre à jour. C'est moins fin qu'un système de patch ligne à ligne mais je pense que c'est plus simple à mettre en oeuvre et tout aussi efficace :)
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

16 oct. 2009, 00:10

Merci pour ta réponse.

Effectivement, je pense que c'est vers la solution que tu proposes que je vais m'orienter. Après avoir consulté un peu à gauche et à droite, je pense que c'est d'une part plus simple, et d'autre part plus sécure de s'y prendre ainsi. En effet, si ma mise à jour plante entre deux lignes, ou si l'utilisateur a décidé de modifier un peu les fichiers, ma méthode rend l'application complètement inutilisable. Tandis que revenir à la configuration d'origine est fonctionnel et n'a aucune raison de poser ce genre de problèmes d'intégrité.

Bref, je vais mettre en place un système qui télécharge le zip de la dernière version. Et mon algorithme récupèrera les fichiers se trouvant dedans et les appliquera aux fichiers requis.

Bonne soirée et encore merci pour la réponse