6

あるマシンのフォルダーを別のマシンのフォルダーと同期させたい。これは WordPress 展開プラグイン用であるため、いずれかのマシンに存在する rsync やその他のコマンドに依存することはできません。PHP と Web サーバーは両方のマシンで使用でき、理想的には HTTP で動作します。

私の現在の考えでは、要求元のマシンはローカル ファイル リストを最終更新日と共に他のマシンのスクリプトに投稿します。他のマシンは、そのファイルと比較し、変更されたファイル (個別にフェッチされるファイルのリスト、または応答でインライン化された変更されたファイル) で応答します。

ただし、既存のソリューションが存在する場合は、それを使用したいと思います。何か案は?

4

3 に答える 3

0

PHP では、いくつかの理由からお勧めしません。

私はあなたがPythonアプリとして必要なものを正確に持っています.

このアプリは、サービスとして実行するように構築されています。開始するだけで、忘れてしまいます :)

アプリ: https://gist.github.com/8f62786582c6933395eb

シェル: https://gist.github.com/e08a99937c6f5deac4ab

注: シェル ファイルは fsyncd.sh ではなく fsyncd と呼ぶ必要があります :)

上記の PHP バージョン:

https://gist.github.com/3963cbc58793ff7e9773

注: 両方のサイトで実行し、それぞれを構成して相互に接続し、cron によって実行されるように設定する必要があります。できればWP cronsによるものではありません。

ここで定義された同期されるディレクトリへのパスがあります:

define("PATH_DATA", PATH_ROOT . "data" . DIRECTORY_SEPARATOR);

私の場合、データ フォルダーはスクリプト フォルダーにあります。絶対パスを設定するか、WP コアを使用して WP アップロード ディレクトリを取得する必要があります。

プリンシパルは次のとおりです。

  1. 2 つのサーバーが相互に通信できるようにする方法を見つけてください。ソケット サーバー/クライアント アプローチを使用しました。HTTP _POST プロセッサ (サーバー) と HTTP _POST メーカー (クライアント) を実行できます。

  2. 最後の同期時間の記録を保持します。

  3. 一定の間隔でフォルダーを読み取り、最後の同期時間から変更されたファイルを記録します。

  4. 変更されたタイムスタンプで更新するファイルのリストを他のサーバーに送信します。

  5. あなたのリストを彼の記録と比較し、彼が持っていないファイルを教えてくれるはずです。

  6. それらのファイルを送信します。

  7. 受信者はファイルを書き込み、変更日を他のサーバーの日付に設定します。(これは、無限ループを避けるために重要です)

幸運を。

于 2013-05-20T18:17:37.303 に答える