В Drupal есть хорошая штука - batch, позволяет обрабатывать большие массивы данных не особо беспокоясь о превышение лимита выполнения скрипта или памяти. Часто это нужно при импорте контента.
Назовем модуль "import_products". Импортируется csv файл.
function import_products_import_form_submit($form, &$form_state)
{
//путь, где мы запускаем batch
$redirect_path = 'admin/content/import_products';
$csv_file_path = file_directory_path() . '/importfile.csv';
$csv_file = file($csv_file_path);
//определяем batch
$batch = array(