Late yesterday we pushed out version 1.2 of WP Migrate DB Pro. We’ve been working on this release for the past two months, incorporating feedback received through customer support.
Single Table Progress Bar
Previously the progress bar only showed when a table was done migrating. If you had a large table, the progress bar could sit at the beginning of the table for a long time without any indication of progress. In this version, we’ve made the progress bar much more fluid, showing the progress of a table as it migrates bit by bit.
Basic Authentication
Many developers protect their staging sites with Basic Authentication. This is a great way to keep people from viewing it and robots from indexing it. And if your client needs to add content, you only need to give them the username and password to gain access. When connecting to a site, WP Migrate DB Pro now detects Basic Authentication and prompts you for the username and password.
Maximum Request Size
Since we started working on this plugin, we’ve done a lot of work to detect the maximum amount of data we can send to the server at a time. And it is pretty good too. It works most of the time. Unfortunately however, there are sometimes limits in place that we can’t detect (e.g. Apache’s LimitRequestBody). In previous versions of the plugin, we would send through as much data as possible, right up to what we detected as the maximum. So, if there were limits in place that we couldn’t detect, the plugin would fail.
This was a bit too aggressive, so in this version, we’ve scaled this back. We now have a slider on the Settings tab that will allow you to change the Maximum Request Size. By default, it sets the Maximum Request Size to 1 MB, which should be within the limits of 99.9% of server configurations. The maximum of the slider is set to what we have detected as the maximum amount of data that the server can receive. You can easily play with the slider, scaling it up and running a migration to see if you get better performance.
Table List
Previously the table list was limited to those tables with the prefix defined in your wp-config.php. Several of our customers wanted to select any tables in their database, not just those with their table prefix. So, the list now includes all tables in the database. We’ve also added the sizes for each of the tables so you can get an idea of which tables will take a long time to migrate and you may want to leave out.
Compatibility
I’m proud to say that this release works in a lot more hosting environments. We added support for servers configured with the Suhosin PHP extension. We completely rewrote the way we push data to servers to avoid tripping up mod security. We reworked the way we run chunks of SQL, retiring use of mysqli_multi_query
in favour of WordPress’ wpdb
class. We setup hosting accounts at a variety of web hosts and verified that our solutions are working. Of course some server configurations will have issues, but much fewer with this release.
Version 1.2 Change Log
- New Feature: Detect Basic Authentication and prompt for username and password
- New Feature: Slider control on Settings tab to throttles Maximum Request Size
- New Feature: Table sizes now shown in the table list
- New Feature: Checkbox under Advanced – Do not migrate the ‘active_plugins’ setting (i.e. which plugins are activated/deactivated)
- New Feature: Define license key in wp-config.php
- Improvement: Now using HTTP file upload to transfer data and avoid triggering mod security
- Improvement: Data is now gzipped for push/pull transfer if supported
- Improvement: Progress of a single table’s migration is now shown
- Improvement: Detect and decode JSON encoded data and run recursive find & replace
- Improvement: Replaced use of mysqli PHP extension with WordPress’ wpdb class
- Improvement: Table list now shows all tables in the database
- Improvement: Added
wpmdb_preserved_options
filter for the ability to preserve any key in the wp_options table - Improvement: Detect Suhosin PHP extension and respect its limits
- Improvement: Added
wpmdb_migration_complete
action to run code after a migration is complete - Improvement: MySQL foreign key constraint support
- Improvement: Updated migration table prefix to ‘_mig_’ to decrease instances where table name exceeds max length
- Improvement: Backups are now stored in
wp-content/uploads/wp-migrate-db/
with an index.php file instead ofwp-content/uploads/
- Improvement: Backups and temporary files now have salts appended to their file name
- Bug fix: Error doing find and replace on some serialized objects (e.g. All-in-One Event Calendar)
- Bug fix: Busy sites with MyISAM tables getting duplicate key error during migration
- Bug fix: Byte order mark (BOM) characters causing problems
- Bug fix: Missing Referer header triggering mod security
- Bug fix: Multisite – GUIDs not being replaced in subsite tables
- Bug fix: Replace use of deprecated
wp_convert_bytes_to_hr
function - Bug fix: Spam commentmeta included when exclude checked
- Bug fix: Unexpected JS errors showing in alert dialog
- Bug fix: Strict Standards errors with PHP 5.4 and WP 3.6
- Bug fix: Incorrect default file path in certain situations
- Also released functionality plugin for examples of extending WP Migrate DB Pro with actions and filters