2009-01-18 9 views
2

J'écris une application web en PHP, et il est temps de construire un système de mise à jour, l'une des exigences est des mises à jour automatiques, comment dois-je faire?PHP Application Mises à jour

Je veux le faire sans cron, donc je vais devoir vérifier les mises à jour lorsque des demandes sont faites sur le système, dois-je le faire seulement quand un administrateur, avec des privilèges importants, se connecte, je pense que cela va être le meilleur mais au moins 1 client a dit qu'ils ne veulent pas cela parce qu'ils ont seulement l'intention de se connecter tous les quelques mois, et ils veulent toujours obtenir les mises à jour de sécurité.

Répondre

2

Peut-être que vous pouvez avoir une page sur votre site qui retourne un petit fichier XML avec le numéro de version la plus récente et une URL pour télécharger:

<xml> <version>1.x.y</version> <url>http://example.com/current.tgz </url> </xml>

Ensuite, si l'administrateur choisit d'effectuer et de mise à niveau, votre application n'aura pas besoin de connaître autre chose que l'URL du fichier XML et le numéro de version actuel.

Bien sûr, il s'agit d'un exemple très limité sur lequel vous pouvez étendre votre contenu de cœur.

0

Qui va créer les mises à jour? Si c'est vous, pourquoi ne pas simplement pousser les mises à jour sur le serveur quand elles sont faites? Une fois qu'une mise à jour est écrite, il suffit de la rsynchroniser et le serveur sera immédiatement mis à jour. Il bat cron, et il vaut mieux vérifier pendant que vos utilisateurs attendent leur page à charger.

1

Utilisez le versioning ofcourse!

J'ai inclus ce 'plugin' dans la plupart de mes sites de production: Bien sûr, vous devez d'abord créer un compte svn de robot à droits limités pour cela et svn doit être installé sur le serveur.

<?php 

    echo(' updating from svn<br>'); 
    $username = Settings::Load()->Get('svn','username'); 
    $password = Settings::Load()->Get('svn','password'); 
    echo(" <pre>"); 
    $repos = Settings::Load()->Get('svn' , 'repository'); 
    echo system ("svn export --username={$username} --password {$password} {$repos}includes/ ".dirname(__FILE__)."/../includes --force"); 
    echo system("svn export --username={$username} --password {$password} {$repos}plugins/ ".dirname(__FILE__)."/../plugins --force"); 

    die(); 

Assurez-vous que vous mettez cela derrière un site .htpasswded ofcourse, et assurez-vous que vous ne mettez pas à jour les « paramètres de production » de SVN. Et voila, Vous mettez à jour votre base de code complète avec une requête HTTP à votre site :) SVN écrase les fichiers automatiquement, il n'y a pas de fichiers ou dossiers cachés et il est facilement adapté pour mettre à jour ou revenir à une version spécifique. Maintenant, tout ce que votre équipe doit faire est de s'engager dans son référentiel SVN, d'exécuter ce morceau de code sur l'environnement de test, de vérifier que tout fonctionne et ensuite de l'exécuter en production :)

Questions connexes