Import Speed

Import Speed

There are three main issues that will affect import speed:

Server Resources: If your server doesn』t have enough available resources this will slow down your import. So if you see that your server is maxing out its CPU or memory usage during an import, upgrading to a more powerful server will help.

Database Size: WordPress stores data in a SQL database. When WP All Import is importing data, it does the actual importing by interacting with your database. The larger your database, the longer each interaction will take.

External Images: Downloading images from somewhere else during your import will always make your import take longer. If the images are large, or the server providing the images is slow, the impact will be even greater.

Specific Problems & Solutions

Large Databases, Bloated Tables, and Big Import Files

As your database grows in size your imports will take longer. It is not possible to avoid this slowdown because as your database grows larger your server and WP All Import must do more work.

For example, when checking for duplicates, WP All Import must search through more records. When updating existing posts with new data, the more posts on the site, the longer it takes MySQL to find the correct post to update.

As your database grows in size you will eventually run up against the limits of WordPress』 database schema. We have seen some users successfully import over 500,000 records into WordPress with WP All Import. And the sites they have created are indeed performant and stable. This, however, is the exception, not the norm. Those users spent weeks on their imports and deployed professional grade server optimization and caching to get that kind of performance out of WordPress and WP All Import.

▸ Solution

Sometimes your database is bigger than it should be. We』ve seen some users suffering from slow imports, and when we look inside their database we find that the wp_options table has over a million entries. The most common reason for wp_options bloat is the transients cache, which you can manage with a plugin like Transients Manager. Check with your host or a database professional to see if your database is similarly bloated.

If you』re trying to build a site with 500,000 products, you』ll need a very powerful and professionally optimized server. This isn』t to accommodate WP All Import so much as it is to accommodate WordPress and WooCommerce.

Typically on a shared host, somewhere between 50,000 to 100,000 records seems to be the upper limit. Anything beyond that often results in server timeouts, slow imports, and long load times.

Slow External Image Hosts

Many users choose to import images from external hosts. In some cases the images are quite large and/or the external host is slow to serve them.

▸ Solution

Run some tests with images disabled. If your import speed improves, try your import using the Importing Images From Your Server method so you don』t have to download the images to your server during the import.

Disable the do_action to Speed Up Imports

Every time WP All Import creates a new post it uses wp_insert_post. The problem with this function is that it wasn』t designed for creating a lot of posts at once – it was designed for creating one post at a time. It can be slow, and part of the reason for the slowness is the do_action calls.

▸ Solution

In Manage Imports ▸ Import Settings ▸ Advanced Options you can enable the Increase speed by disabling do_action calls in wp_insert_post during import feature.

This will prevent other software in your WordPress site from interacting with posts as they are imported, so other plugins that are supposed to automatically do things to new posts may not work for imported posts.

See http://codex.wordpress.org/Plugin_API/Action_Reference and http://codex.wordpress.org/Function_Reference/wp_insert_post for details.

Shared Hosts and Low Server Resources

All servers were not created equally. Many times hosting companies will cram as many sites as possible into their hardware to keep costs down. Sometimes they will limit the amount of PHP processing time you are allowed or the number of SQL queries you』re able to make. Or maybe they』ll throttle your processing power. Or maybe they don』t do anything, but the 1,000 other websites running on the same piece of hardware are consuming so many resources that your import has to fight for CPU time to finish processing.

▸ Solution

If you』re running low on available resources, upgrading to a server with more available resources (amount of RAM, number of CPUs, etc) will help. But it will usually only help if you』re running low on available resources. While the actual clock speed of your server』s CPU, RAM, and disk do play a role in how long your import takes, it』s not a very big one.

Think of it like a moving truck.

If you』re moving and your truck is too small you』ll have to make more trips and this will slow you down. Buying a bigger truck will help. But if your truck is already big enough to fit all of your stuff, buying a bigger truck (more CPUs, RAM, etc) isn』t going to help you move any faster. Upgrading to a server with a faster CPU and disk would be like putting a new engine in your truck. Sure, your move might go a little faster, but it should not be the focus of your efforts.

See our recommended hosts page for a list of web hosts that work great with WP All Import.

My Import Runs Faster On Your Server

Our server hosts hundreds and hundreds of WordPress sites and is running multiple imports from different users at the same time. The hardware we use is quite powerful. But, it』s likely that the testing installation is able to run WP All Import faster only because it has an empty database with very few plugins installed.

We optimized our server to make sure multiple imports could be run at the same time and to scale up server resources as needed. We also spent some time making sure people wouldn』t run in to any server errors during their imports.

We didn』t make any effort to optimize the server so it would run imports any faster. In terms of server optimization, all that you can really do is make sure you』re running the latest version of PHP and that you aren』t maxing out your server』s available resources.

Dealing With Long Import Times

Sometimes there』s nothing you can do to speed up your imports. In these cases you can structure your imports so that it doesn』t matter how long they take. If you set your imports to run automatically with a cron job then you won』t have to keep your browser open while they process – they will just run in the background.

If your site is suffering from performance issues while your imports are running, you can enable the Cron Sleep option in All Import ▸ Settings. This will slow down your import so that it won』t slow your site down for visitors.

Terminated Imports & Server Errors

Terminated Imports & Server Errors

This means that your server is stopping the import process before it can complete. WP All Import processes records piece by piece to help prevent this from happening.

Sometimes you can prevent your server from terminating the import simply by lowering the records per iteration. Other times the reason for the termination has nothing to do with the records per iteration.

No matter the cause, the troubleshooting process always starts the same:

Lower the records per iteration. You can control how many records are processed in each iteration in Import Settings ▸ Advanced Options ▸ Iterative, Piece-by-Piece Processing. If your import is still being terminated with 1 record per iteration, then you』ll need to modify your server settings so it will allow WP All Import to run.

Contact your host and have them check your server』s error log. They will be able to see exactly why your server is terminating the import and they will know exactly how to fix it. There isn』t anything we can do to help until your host has checked the error log and we know exactly what the issue is.

Server Timeouts

Servers have a number of settings that place hard limits on how long processes are allowed to run before they are terminated.

There are the two very common hard limits that our users run in to:

Maximum Execution Time (PHP): This is set in php.ini with max_execution_time. It determines how long a process is allowed to run before it』s terminated. You can ask your host to increase the limit, but this should be considered a last resort.

FCGID Timeouts (Apache): This is set in httpd.conf with FcgidIOTimeout.It determines how long mod_fcgid will wait while trying to perform a read or write. It should be set as high as your host will allow. In our experience 90 seconds is sufficient.

Server Errors

When servers are misconfigured or trying to do things that require more resources than are available, they will throw an error. The error message is usually just a 3-digit number. The number can give you some information about what the nature of the error. For example:

500 Internal Server Error: This often occurs when something in your WordPress theme or one of the plugins has some sort of issue.

503 Service Unavailable: This often occurs when the server is overloaded. It can also indicate that the security system on your server is blocking WP All Import.

504 Gateway Timeout: This is often related to the server being overloaded.

Our support team will not be able to help you troubleshoot these errors. You will need to contact your host to check your server's error log.

Check Your Server's Error Log

You'll need to contact your host's support team and ask them to look for error log entries around the time the error occurred. To help your host's support team be sure to include the following information in your support request:

The exact time the error occurred, including the timezone. If you're not sure when it occurred, please take the steps necessary to reproduce the error.Your IP address. Visit http://www.whatismyip.com/ for help.A screenshot of the error, including the URL in your browser.

If your server is throwing errors it is your host's responsibility to make sure it is logged. If your host is unable to find any relevant entries in the error, have them make sure that error logging is enabled and that they are checking the relevant error log. There are usually at least three places errors are logged on your server:

PHPWeb Server (Apache or NGINX)Database (MySQL or MariaDB)

We will not be able to help you find, read, or interpret your server's error log. Even if we were able to do so, you'd still need to contact your host to make the necessary changes to resolve the error. This is why you pay for hosting, and problems like these are where good hosts stand out from bad ones.

For a list of hosts that work great with WP All Import, see our recommended hosts page.

Troubleshooting Guide

Troubleshooting Guide

Is WP All Import not working as expected?

This process will solve pretty much any problem you』re having:

Make sure you are using the latest versions of WordPress, WP All Import and any add-ons and other plugins you have installed. You can get the latest versions of WP All Import and its add-ons in the customer portal.Eliminate other themes and plugins as the potential cause of a conflict. Deactivate all other active WordPress plugins and activate the WordPress default theme.Test out your import on our debugging server. If the import works on our debugging server, but not on yours, you know it』s a problem on your end – most likely with your server settings.Ask your host to check your server』s error log to see if something is stopping WP All Import from working properly. Often, artificial limits on script execution time or MySQL queries prevent WP All Import from finishing imports. Read our guide on terminated imports.

Common Issues

Drag and drop not working? Admin screens look strange? 

First, try clearing your browser cache or using a different web browser. If the problem persists, the issue is usually a theme or plugin conflict. Improperly coded WordPress themes and plugins may load their own JavaScript or CSS files on WP All Import's admin screens, potentially breaking them. See our guide on testing for theme and plugin conflicts: Plugin & Theme Conflicts.

Can』t get from Step 1 to Step 2, Step 2 to Step 3, etc?

Broken PHP session settings will prevent you from being able to move between the different steps of the import process. If you suspect this is the cause, you』ll need to contact your host.

Running in to a Security Check error?

Clear your browser cache or try using a different browser.

Trying to increase import speed?

Read our guide on slow imports.

Import isn』t finishing?

Read our guide on terminated imports.

Concerned your server isn』t properly configured?

If your imports complete successfully, your server is properly configured. If you』re not able to successfully complete an import, it may be that your server is missing necessary components.

We』ve put a lot of effort into getting WP All Import to function on as many different server configurations as possible, and generally speaking, if WordPress works, WP All Import will work.

WP All Import server requirements:

PHP 5.4 or greaterMySQL 5.5 or greatercURLlibxmlSimpleXMLxmlreaderxmlwriterZipArchive

These are all commonly found on servers provided by the vast majority of hosts.

For a list of web hosts that are confirmed to work great with WP All Import, see our recommended hosts page.

File uploads acting weird? Strange caching issues?

Issues with caching can be hard to diagnose. Often they will show themselves if you upload a new import file but WP All Import shows you an older, unrelated import file. There are other symptoms as well, but this is the most common one.

If you』re having a problem with WP All Import and use some form of server side caching, try your import on one of our testing servers. If you aren』t able to reproduce the problem on a testing server, the issue might be related to your caching configuration. We especially see these types of issues with users hosted by WP Engine and Pantheon, or when Varnish tries to cache admin pages.

If you are able to successfully run your import with caching disabled, work with your host to figure out how to configure their caching so that when WP All Import asks for a file or makes a SQL query, the correct result is returned instead of an incorrect, cached result.

Other strange behavior?

Broken WP All Import database tables can stop the import from working correctly.

Try restoring the database tables form a backup, or deleting the WP All Import database tables and reinstalling WP All Import (you will lose all of the data associated with your previous imports).Deactivate and reactivate WP All Import.Test on a fresh WordPress installation with a newly created MySQL database.

Encoding & Character Sets

Encoding & Character Sets

XML Files Can Have Any Character Encoding

XML files can be saved with any character encoding. That character encoding should be defined at the top of the XML file, per XML standards on specifying the character encoding of an XML document.

If special characters in your XML file aren』t appearing correctly in the posts created by WP All Import, it means that the encoding specified in your XML file is probably incorrect – maybe your XML file is claiming to be a UTF-8 when it really is a Windows-1252, or similar.

If you're sure that your XML file is valid, it's not using UTF-8 encoding, and WP All Import is still rejecting it, try adding this code snippet inside your child theme's functions.php file (or in a plugin like Code Snippets):

add_filter( 'is_xml_preprocess_enabled', 'wpai_is_xml_preprocess_enabled', 10, 1 );
function wpai_is_xml_preprocess_enabled( $is_enabled ) {
return false;
}

CSV Files Must Be UTF-8 Or UTF-8 Compatible

Since there is no way to specify the character encoding for a CSV file, WP All Import just assumes all uploaded CSV files are UTF-8, which is the standard character encoding for the web.

This works the vast majority of the time, but if you are importing a CSV file with special characters (things like umlauts, non-Latin characters, etc.) and those special characters aren』t appearing correctly in the posts created by WP All Import, try opening your CSV file in a text editor using the correct encoding, and then re-save it using UTF-8.

On a Mac, our favorite way to do this is using Sublime Text 2.

Plugin & Theme Conflicts

Plugin & Theme Conflicts

Sometimes an issue can be hard to diagnose because it』s being caused by another plugin or your theme. Follow these steps to test for a plugin or theme conflict:

Deactivate all plugins other than WP All Import, WP All Export, and any WP All Import/Export Add-Ons you are using. If you』re importing data into WooCommerce, ACF, or something similar you should leave that plugin active.Switch to a default, unmodified, WordPress theme. If you』re using an add-on to import into a theme, you can leave the theme active.Run your import/export and check the results. If the problem no longer occurs then we know that one of the deactivated plugins or your theme is the cause of the problem.

If there is a conflict, then slowly begin reactivating your old theme and plugins and running the import/export. When the problem returns, whatever you just activated is the cause of the problem.

If you find that deactivating all other plugins and switching to a default theme does not fix the issue, then there』s no conflict. If this is the case, submit a support request and we』ll help you track down the cause of the problem.

Problems with Import Files

Problems with Import Files

This could be happening for a number of reasons, but the troubleshooting process always started the same:

Contact your host and have them check your server』s error log. They will be able to see exactly why your server is rejecting your import file and they will know exactly how to fix it. There isn』t anything we can do to help until your host has checked the error log and we know exactly what the issue is.

Common Server Configuration Issues

Import files are usually rejected because the file you』re trying to upload exceeds your server』s hard limits on file size. Here are the most common hard limits that users encounter:

Maximum Upload File Size (PHP): This is set in php.ini with upload_max_filesize. It determines the maximum file size that your server will allow to be uploaded. This value must be larger than the size of the file you wish to upload to WP All Import.

Maximum Post Size (PHP): This is set in php.ini with post_max_size. It determines the maximum file size allowed to be used in PHP process. This should be set higher than upload_max_filesize.

Memory Limit (PHP): This is set in php.ini with memory_limit. It determines how much memory a script is able to allocate. This should be set higher than post_max_size.

"There's a problem with your import file."

This error is usually encountered when the import file is not valid. There are a number of common reasons that this may be the case:

No Import File: Open the URL in your web browser. It should either download or display a valid import file. If anything else happens then WP All Import will not be able to import the data.

Changed Import File: If the structure of the import file changes then WP All Import will no longer be able to find the data that it is supposed to import. You can either create a new import with the new file, or you can adjust the XPath setting in Import Settings ▸ Advanced Options, and then reconfigure your import in Manage Imports ▸ Edit Import.

Character Encoding: Sometimes the file in encoded in such a way that it may look valid but it』s really not. Other times, a file will declare that it is encoded in one way but really it』s encoded in a different way. Read more on our guide to character encoding.

Incorrect feed type detected: If you're downloading a feed via URL, and there's no file extension, it's possible that WP All Import will guess the incorrect file type. To fix it, you can add "#/" at the end of the URL, then put a fake file name with the real extension, e.g.: https://example.com/?action=getfeed&results=100#/feed.json

Does Not Pass Validation: There are pretty strict rules that XML, CSV, and JSON files must conform to in order for them to work. You can validate your data and URL using one of the following free online services:

XML: http://codebeautify.org/xmlvalidator

CSV: http://csvlint.io

JSON: http://jsonlint.com

Recommended Hosts

Recommended Hosts

While many hosts work well with WP All Import, if you are looking for a specific recommendation Liquid Web and Nexcess work exceptionally well with WP All Import and we've partnered with them to offer a discount for new users. To take advantage of this discount, use the coupon code WPALLIMPORT35 for 35% off your first 3mo when signing up.

Managed Hosting Plans

Nexcess offers two products that we recommend, one tuned for general purpose WordPress sites, and another specifically tuned for WooCommerce sites. Both plans start at $19/mo and work great with WP All Import.

Nexcess Managed WordPress Hosting

Nexcess Managed WooCommerce Hosting

VPS, Cloud, and Dedicated Servers

If you need more horsepower, flexibility, or control over your hosting environment, then you probably want to go with one of Liquid Web's hosting options. They have a variety of options to choose from, with VPS hosting starting at $39/mo, cloud hosting at $51/mo, and dedicated servers at $140/mo.

Liquid Web VPS Hosting

Liquid Web Cloud Hosting

Liquid Web Dedicated Servers

Which one is best for me?

If you aren't sure, the managed hosting options from Nexcess will probably serve your needs very well. If you have a large site or need more flexibility than a managed hosting plan can offer, then you should get in touch with Liquid Web to discuss their VPS, cloud, and dedicated hosting options.

Managed Hosting vs VPS Hosting

Managed Hosting: The hosting company has many sites from different customers all running on the same server inside the same operating system, competing for the same resources. Think of it like sharing a house with roommates. Everyone shares the same kitchen, living room, and bathroom. If the same person spends four hours a day showering or fills the refrigerator with their groceries, you』re going to have a problem. Like landlords, some shared hosts are better about mitigating these issues, but you are still sharing a bathroom with many other people.

VPS & Cloud Hosting: Sites from different customers are still running on the same server, but on separate operating systems, in virtual computers. Another piece of software called a hypervisor makes sure that each operating system always has the same amount of resources available to it. Think of it like living in an apartment complex. You still have a lot of neighbors technically living in the same building, but no matter how many people are taking a shower at the same time, yours is always available.

Dedicated Hosting: You are renting out an entire server and are not sharing it with anyone. This is overkill for the vast majority of sites, but if you need complete control over your hosting environment, then renting a dedicated server is a good option.

Imports & Server Resources

Imports require a lot of server resources, especially if you are importing a lot of data or have a large database. Hosting review sites cover speed, reliability, and customer service but rarely let you know which hosts will throttle your processing power or limit your SQL queries.

Some hosts will pack many customers into small, underpowered, servers. Sites that consume a lot of resources will eat up all of the available processing power, leaving none for you and your import. Alternatively, some hosts will proactively kill your import process to protect other people』s sites.

We』ve tested a lot of hosts and out of all of them, Liquid Web and Nexcess are the two we』ve had the best experiences with. Both are fast, reliable, have well-reviewed 24/7 customer support, and work great with WP All Import.