J'ai le problème suivant. J'ai eu un plugin qui est énorme en raison de toutes les données nécessaires. Les données concernent tous les pays et villes du monde, ainsi qu'une base de données maxmind.mmdb.
Actuellement, tout est emballé dans le plug-in, ce qui en fait un plug-in de 20 Mo, ce qui crée un problème pour les utilisateurs dont la taille de téléchargement est limitée, ce qui les force à décompresser et à télécharger manuellement par FTP le plug-in complet.
Pour charger toutes les villes, j'ai obtenu 6 fichiers csv que je charge lors de l'activation à l'aide du code suivant:
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 );
}
}
Cela fonctionne sur presque tous les hébergements mais cela échoue dans certains d'entre eux, comme par exemple WPEngine.
Je pensais donc que, pour résoudre les deux problèmes en même temps, je pourrais télécharger toutes les données sur mon instance Amazon et une fois le plug-in activé, l'utilisateur téléchargerait et installerait toutes les données en cliquant simplement sur un bouton.
J'espère que quelqu'un pourra nous éclairer un peu. Merci!
Pour répondre directement à vos questions:
Votre solution proposée est en effet viable. Assurez-vous simplement que votre solution CDN (Amazon S3, par exemple) est configurée pour accepter les connexions sécurisées (http) et non sécurisées (https).
En ce qui concerne votre prochaine question, CSV est par nature un excellent moyen de stocker une représentation d'une table. Une autre alternative (sans voir un exemple de jeu de données avec lequel vous travaillez) est XML. Cela pourrait également convenir, car cela permet des relations un à plusieurs.
JSON peut également convenir pour faciliter la transition entre le texte et une base de données.
Cela dit, la meilleure solution consiste à créer un service d'API vous-même et à permettre à votre plug-in de communiquer avec lui.
Je peux voir deux options:
Quelques idées:
Ce n'est pas un must dans ce cas. Sans "caractères, vous pouvez réduire la taille de vos fichiers .csv. Cela pourrait aider seul.
Stockage des données: mon meilleur choix (si LOAD DATA n'est pas autorisé) consiste à stocker des instructions JSON ou INSERT compressées sur votre instance Amazon.
Vous pouvez également vérifier les fonctions désactivées sur WP Engine ici.