Working with large forms having many fields

Content forms having many fields (100 or more, for example) demand additional resources and will benefit from optimization of field storage tables. This document explains how to increase PHP resources to support them, and how to optimize field storage.

PHP Resources

It's important to realize the default PHP configuration of many systems is inadequate for such large content types and forms. Even the default recommendations for SEBLOD may be inadequate.

SEBLOD recommends the following:

max_file_uploads = 50
max_input_vars = 3000

But when working with very large content types, you may need to increase max_input_vars even more. It may also be necessary to increase both the memory_limit and post_max_size. If you do, be sure that memory_limit is set to some value that is greater than post_max_size.

Optimizing Field Storage

Another important consideration is optimization of the table in which fields are being stored. When using the Article object type and Standard field storage, field values are stored in a __cck_store_form_xxx table (where "xxx" is the name of your content type). If you create lots of text fields in your content type, which are by default stored as VARCHAR(255) fields in __cck_store_form_xxx, such inefficient storage can lead to problems where you can't add additional fields to your form. If you encounter such a problem, optimizing the __cck_store_form_xxx table so it employs more efficient field types and sizes should resolve the issue. Actually, using more efficient field types and sizes is a good idea whether you encounter the issue or not.

You can easily alter the field storage by clicking the "Alter" checkbox in the field's Storage configuration (see image below), then select a field type and size that is appropriate for your data.



Hope this is helpful!