在不重启的情况下向IIS添加PHP扩展


Adding PHP extension to IIS Without Restarting

我在客户端有一个工作的PHP网站,我在IIS上工作。在切换到MsSQL时,我需要启用php_pdo_sqlsrv_53_nts.dll。然而,一旦我启用扩展,我开始收到一个500错误。我的猜测是我需要重新启动web服务器,但由于某些原因,此时我们希望避免它。

请告诉我是否需要在IIS上重新启动web服务器才能正确启用php dll?

即使您在本地主机上工作,也需要重新启动 !

yes - see Microsoft.com

提醒你,重新启动我的任何web服务器只需要几秒钟,所以我不确定这对你的客户来说是否是个大问题。他有不止一台带负载均衡器的服务器吗?这样的话,你可以一个一个地做吗?或者,也许还有另一个聪明的主意,通过更改DNS暂时将流量重新路由到其他地方?

与流行的观点相反,我要说,原因如下:

因为你正在使用IIS,你可以尝试回收应用程序池,如果重新启动不一定是紧急的。

循环可能需要一段时间,但"recycle"使用重叠方法,保持旧进程直到其活动请求完成,而新进程处理任何新生成的请求。这将一直持续到所有现有进程完成,然后旧的池将优雅地退出。这将确保终端用户的服务不会中断。不利的一面是,如果您的用户在站点上停留了很长时间,那么您的PHP扩展可能需要一段时间才能可用。

我过去使用这个方法已经成功了,能够安装PHP扩展而不需要重新启动IIS。

在IIS 7中回收:

  1. 开放互联网信息服务(IIS)管理器
  2. 导航到服务器名>应用程序池
  3. 选择您希望回收的池(一个附加到您需要扩展的网站)
  4. 在Action窗格中,单击"Recycle…"