web-dev-qa-db-ja.com

プラグインデータベースをリモートでダウンロードしてインストールする方法

次のような問題があります。私は必要なすべてのデータのために巨大なプラグインを手に入れました。データは、世界中のすべての国と都市、およびmaxmind.mmdbデータベースです。

1 - 発行

現在、私はすべてのものを20MBのプラグインにするプラグインに詰め込んでいて、それは制限されたアップロードサイズを持つユーザーにとって問題となっています。

2 - 発行

すべての都市をロードするために、次のコードを使用してアクティベーション時にロードする6つのcsvファイルを入手しました。

if ($wpdb->get_var( "SHOW TABLES LIKE '{$city_table_name}'") != $city_table_name) {
    dbDelta( $city_table );

    for ( $i = 1; $i <= 6; $i ++ ) {
        $csv_file  = dirname( __FILE__ ) . '/data/cities' . $i . '.csv';
        $load_data = "LOAD DATA LOCAL INFILE '{$csv_file}' INTO TABLE `{$wpdb->base_prefix}geot_cities` CHARACTER SET UTF8 FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\' LINES TERMINATED BY '\\n' ( `country_code` , `city`);";
        $wpdb->query( $load_data );
    }
}

これはほとんどすべてのホスティングで機能しますが、WPEngineなどの一部のホスティングでは失敗します。

考えられる解決策

だから私はおそらく両方の問題を私のAmazonインスタンスにすべてのデータをアップロードすることができたらすぐにプラグインがアクティブになったらボタンをクリックするだけですべてのデータをダウンロードしてインストールするだろうと考えていました。

質問

  • これはWordPressの機能を使用して実行可能または実行可能なものになりますか、それとも他のホスティングの非互換性に直面します。誰かがこのようなものを使った経験がありますか?
  • これが可能な場合、データを保存するための最良の方法は何でしょうか。なぜなら、csvをロードする代わりに、それをより互換性のあるものにするためにある種のinsert data queryのためにそれを置き換える必要があるからです。

私は誰かがこれに光を投げることができると思います。ありがとうございます。

1
chifliiiii

直接質問に答えるには:

あなたの提案したソリューションは確かに実行可能です、あなたのCDNソリューション(例えばAmazon S3)が安全な(http)と安全でない(https)接続の両方を受け入れるように設定されていることを確認してください。

あなたの次の質問に関しては、CSVは本質的にテーブルの表現を保存するための素晴らしい方法です。もう1つの代替方法(作業しているデータの例を見ないでください)はXMLです。それは1対多の関係を可能にするので、それは同様に良いフィットかもしれません。

JSONは、テキストとデータベース間の移行を容易にするのにも適しています。

とは言っても、ハンズダウンの最善の解決策は、自分でAPIサービスを構築し、プラグインがそれと通信できるようにすることです。

0
pwbred

2つの選択肢があります。

  • 都市情報を使用してAPIを作成し、プラグインにそのAPIを使用させる
  • 各CSVに1つずつ、プラグイン用に別々のアドオンを作成します。
3
Bruno Cantuaria

いくつかのアイデア:

  1. '\ "'で囲まれています

この場合は必須ではありません。 がなければ、.csvファイルのサイズを減らすことができます。

  1. SQLiteを使用することも別の選択肢となります。郵便番号が数字だけであるならば、それは.csvファイルより小さいdbファイルを保存するかもしれません、しかし私はこれをテストしませんでした。それは試してみる価値があります。そしてそれをデータベースとして使うことができます。 WPはデフォルトではサポートしていないので、他の関数を書くか使用する必要があります。
  2. HTTP API関数 を使用してください。これらの機能はプラグインマネージャによっても使用されます。そこでそれがうまくいくのなら、あなたはそれらをここでも使うことができます。

データの保存:最善の策(LOAD DATAが許可されていない場合)は、圧縮されたJSONまたはINSERTステートメントをあなたのAmazonインスタンスに保存することです。

ここで WPエンジンで無効になっている機能をチェックすることもできます。

0
Szektor