Во-первых, вы никогда не должны называть header()
просто так, если только вы не уверены, что помощники Drupal не подходят (я никогда не сталкивался с такой ситуацией за 10+ лет разработки Drupal)
header()
не будет вызывать функции выключения и другие функции закрытия в Drupal, что приведет к потенциально нарушенным сеансам, неправильной статистике и сломанным модулям (которые зависят от вызываемого закрытия). Тот факт, что сокеты и другие низкоуровневые ресурсы не закрываются в таких случаях, может в какой-то момент даже вызвать сбой вашего сервера Apache (или других серверов).
Скорее вызовите drupal_set_header () , если вы хотите установить заголовок. В девяти случаях из десяти вам нужен заголовок перенаправления, в этом случае лучше всего вызывать drupal_goto () , который выполняет все закрытие и даже поддерживает параметры назначения, которым нужно следовать.
В drupal_goto все процессы убиты (см. exit()
внизу), следовательно, запущенный процесс не будет сохранен. module_invoke_all('exit')
будет следить за тем, чтобы все модули по очереди закрывали свои гнезда, соединения и многое другое.