2012-01-03 9 views
0

カスタムメイドのCMS用のファイルセットがあり、実際にクライアントベースが実際に増えているので、私はcronジョブを使って自動更新する必要がありますおそらく夜。自動化されたPHPスクリプトアップデータのガイドライン

基本的には、/ admin(.phpと.jsファイル、マスタードメインを常に参照する.cssファイルを含む)以下のすべてのファイルを置き換える必要があります。

私のファイルはパブリックなgithubリポジトリにはありませんので、手作業でZIPしてアップロードするか、単にサーバー上で行う必要がありますそれをgzipするファイルマネージャー?

セキュリティの問題などを軽減するためにこれをどうやって行うかについてのガイドラインが必要です。これが最善のアプローチですか?圧縮ファイルをダウンロードして解凍するには?ファイルを解凍すると、問題なく既存のファイルが自動的に上書きされますか?

いくつかのアカウントが私のサーバーの外側にあるので、コマンドラインユーティリティを使用したくないので、SSHなどのファイルをコピーすることはできません。

ありがとうございました。あなたはcronのを作成することができますgitのようにVCSを使用して

答えて

1

あなたは、クライアントのビルドのターゲットディレクトリをループのcron PHPスクリプトを実行しようとすることができ、その内容のハッシュを作成し、あなたのマスターコピーと比較:

$files = array(); 
if ($handle = opendir('/path/to/files')) { 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != "..") { 
      $file_hash = md5(file_get_contents('/path/to/files'.$entry)); 
      compare_and_get_contents('/path/to/files'.$entry, $file_hash); 
     } 
    } 
    closedir($handle); 
} 

compare_and_get_contents(以下のような)関数は、になります:あなただけの親バージョンのハッシュにクライアントバージョンのハッシュを比較したページ(http://mysite.com/compare)を記述する必要があると思います

function compare_and_get_contents($file_path,$hash){ 
    $get_code = file_get_content('http://mysite.com/compare?path='.urlencode($file_path).'&hash='.$hash); 
    if (strlen($get_code)>0){ 
     file_put_contents($file_path,$get_code); 
    } 
} 

と一致しない場合、親バージョンのコードを出力します。また、データが転送されるときに暗号化したい場合は、そのデータを暗号化することもできます。明らかに、このコードは少し修正する必要があり、いくつかの潜在的なセキュリティと権限の問題がありますが、仕事を完了させる可能性があり、zipファイルとしてすべてを渡すよりも帯域幅が少なくなります。

+0

私はこのようなことをやめました - マザーサーバーからファイルを取り出してからzipファイルを入れてから解凍してください! – jeffkee

1

git pull 
のように毎晩CVSを呼ぶこと。そのリポジトリが公開されていることを、必要に応じ、サーバーがアクセスする必要がありません。その後、

+0

素晴らしいアイデア - しかし、サーバーにアクセスするためには、はるかに大きなGITアカウントが必要です。私はWordPressのやり方に似た、PHPファイルダウンローダを使った簡単なソリューションを期待しています。 – jeffkee

+0

@jeffkee自分のサーバーにgitリポジトリをホストするだけですか? –

+0

わからない、「GITアカウント」の意味。あなたは、選択したサイズのハードドライブとインストールされたSSHサーバーを備えたシステムが必要です。それはすべてのgitの必要があります。 – KingCrunch