Linux 重定向时是否处理重定向的页面?

Linux 重定向时是否处理重定向的页面?,linux,drupal,drupal-6,process,operating-system,Linux,Drupal,Drupal 6,Process,Operating System,我把重定向代码放在页面顶部,页面下面有引导代码。重定向是否会产生另一个进程,使重定向页面进程成为后台进程,还是完全终止当前进程 我正在使用header()进行重定向,但令人惊讶的是,header()下面需要数据库连接的剩余代码也被执行了。这让我感到好奇。据我所知,一个进程同时处理原始请求和重定向请求。一旦原始请求完成,就会处理重定向请求 由于有许多URL重定向技术,除非您告诉我们您正在使用的特定URL重定向技术,否则我们无法确定。据我所知,如果您直接从apache htaccess文件重定向,则

我把重定向代码放在页面顶部,页面下面有引导代码。重定向是否会产生另一个进程,使重定向页面进程成为后台进程,还是完全终止当前进程


我正在使用header()进行重定向,但令人惊讶的是,header()下面需要数据库连接的剩余代码也被执行了。这让我感到好奇。

据我所知,一个进程同时处理原始请求和重定向请求。一旦原始请求完成,就会处理重定向请求


由于有许多URL重定向技术,除非您告诉我们您正在使用的特定URL重定向技术,否则我们无法确定。

据我所知,如果您直接从apache htaccess文件重定向,则不会创建新进程。如果使用header()函数,它会向apache服务器发送响应,apache会重定向页面。在这两种情况下,都没有创建新流程;但是后面的一个在重新定向之前运行php脚本(更昂贵?)

首先,你不应该像那样调用
header()
,除非你非常确定Drupal助手不合适(在我10多年的Drupal开发中,我从未遇到过这种情况)

header()
不会调用Drupal中的shutdown和其他closing函数,这可能会导致会话中断、统计错误和模块中断(这取决于调用的closing)。在这种情况下,套接字和其他低级资源不会关闭,这一事实甚至可能在某个时候使apache服务器(或其他服务器)崩溃

如果你想设置一个标题,可以调用。十次中有九次你想要一个重定向头,在这种情况下你最好调用它,它完成所有的关闭,甚至支持要遵循的目标参数


在drupal_goto上,所有进程都被终止(请参阅底部的
exit()
),因此不会保留任何正在运行的进程。
module\u invoke\u all('exit')
将确保所有模块在关闭它们的套接字、连接等方面都有机会。

我将标题代码放在index.php的正上方。这是否也会导致故障?实际上,我使用此重定向将站点转到维护页面,因为MySQL服务器需要停止一段时间。在index.php的顶部,Drupal尚未加载,因此实际上,您需要在那里运行header(),然后调用exit(),/if/如果您真的想这样做的话。我对此表示怀疑。您只需在Drupal根目录中放置一个名为index.html的HTMLpage,然后禁用或重命名.htaccess。如果你重定向,谷歌、书签和服务将跟随重定向,并造成许多不必要的副作用。