如何远程下载和安装插件数据库

时间:2015-11-05 作者:chifliiiii

我有以下问题。我有一个插件,这是巨大的,因为所有需要的数据。这些数据是世界上所有国家和城市的数据,也是一个最大的数据。mmdb数据库。

1-问题

目前,我在插件中打包了所有内容,这使得一个20mb的插件,这给上传大小有限的用户带来了问题,迫使他们解压缩并通过FTP手动上传整个插件。

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)中失败。

可行的解决方案,所以我在想,也许要同时解决这两个问题,我可以将所有数据上传到我的亚马逊实例,一旦插件激活,用户只需单击一个按钮即可下载并安装所有数据。

问题是,使用WordPress功能这是可行的还是可行的,或者我将面临其他托管不兼容问题。有人有过使用这种东西的经验吗

3 个回复
最合适的回答,由SO网友:pwbred 整理而成

要直接回答您的问题:

您提出的解决方案确实可行,只需确保您的CDN解决方案(例如Amazon S3)配置为同时接受安全(http)和不安全(https)连接即可。

至于您的下一个问题,CSV本质上是存储表表示的一种很好的方式。另一种选择(没有看到正在使用的数据示例集)是XML。这可能也是一个很好的选择,因为它允许一对多的关系。

JSON可能也很适合简化文本和数据库之间的转换。

尽管如此,最好的解决方案是自己构建一个API服务,并允许插件与之通信。

SO网友:Bruno Cantuaria

我可以看到两种选择:

您可以使用城市信息创建一个API,并使插件使用该API,您可以为插件创建单独的附加组件,例如为每个CSV创建一个附加组件

SO网友:Szektor

Some ideas:

  1. 由“\\”括起
在这种情况下,它不是必须的。Without “chars您可以减少.csv文件的大小。这可能会单独有所帮助。

使用SQLite是另一种选择。如果邮政编码仅为数字,则可能会保存一个比数字更小的db文件。csv文件,但我还没有对此进行测试。值得一试。您可以将其用作数据库。默认情况下,WP不支持它,因此您必须编写或使用其他函数使用HTTP API functions! 插件管理器也使用这些函数。因此,如果它在那里起作用,你也可以在这里使用它们Storing data: 我的最佳选择(如果不允许加载数据)是在Amazon实例上存储压缩的JSON或INSERT语句。

您还可以在上检查禁用的功能WP Engine here.