次のような問題があります。私は必要なすべてのデータのために巨大なプラグインを手に入れました。データは、世界中のすべての国と都市、およびmaxmind.mmdbデータベースです。
現在、私はすべてのものを20MBのプラグインにするプラグインに詰め込んでいて、それは制限されたアップロードサイズを持つユーザーにとって問題となっています。
すべての都市をロードするために、次のコードを使用してアクティベーション時にロードする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インスタンスにすべてのデータをアップロードすることができたらすぐにプラグインがアクティブになったらボタンをクリックするだけですべてのデータをダウンロードしてインストールするだろうと考えていました。
私は誰かがこれに光を投げることができると思います。ありがとうございます。
直接質問に答えるには:
あなたの提案したソリューションは確かに実行可能です、あなたのCDNソリューション(例えばAmazon S3)が安全な(http)と安全でない(https)接続の両方を受け入れるように設定されていることを確認してください。
あなたの次の質問に関しては、CSVは本質的にテーブルの表現を保存するための素晴らしい方法です。もう1つの代替方法(作業しているデータの例を見ないでください)はXMLです。それは1対多の関係を可能にするので、それは同様に良いフィットかもしれません。
JSONは、テキストとデータベース間の移行を容易にするのにも適しています。
とは言っても、ハンズダウンの最善の解決策は、自分でAPIサービスを構築し、プラグインがそれと通信できるようにすることです。
2つの選択肢があります。
いくつかのアイデア:
この場合は必須ではありません。 がなければ、.csvファイルのサイズを減らすことができます。
データの保存:最善の策(LOAD DATAが許可されていない場合)は、圧縮されたJSONまたはINSERTステートメントをあなたのAmazonインスタンスに保存することです。