通过文件共享在 IIS 中加载 PHP 的长时间延迟
Long delay to load PHP in IIS over fileshare
我有一个新的 IIS 10 / Server 2019 服务器,它使用 SMB 文件共享来存储应用程序数据。我的问题是,对于 PHP 站点,一个简单的 "hello world" 网站启动大约有 2 分 15 秒的延迟。更奇怪的是,它在所有 PHP 7.x 的网站上都这样做,但在 5.x 上不这样做,除非它是像 Mediawiki 这样更复杂的网站。它也仅在通过文件共享加载时执行此操作,否则可以快速访问。第一次加载后,它会快速运行大约 3 分钟,直到任何加载的进程都必须再次从头开始重新加载。使用错误日志,我可以看到 PHP 会立即加载 ini,并会立即抱怨格式错误等,但 php 页面的第一行直到最后一秒才会加载。 PHP xdebug 似乎直到加载的最后一秒才注意到任何东西。
确实看起来有些东西正在尝试解决并超时,但是使用 //192.168.1.x 并不比 //fileshare 更好。我已经通过 php.ini 寻找罪魁祸首,但找不到。非常感谢任何帮助!
我搞砸的主要设置是下面的设置,它们具有不同的组合和编写路径的方式。
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
fastcgi.logging = 0
track_errors = Off
soap.wsdl_cache_dir = C:\inetpub\php_temp
error_log = "C:\inetpub\php_errors\php_error73.txt"
upload_tmp_dir = C:\inetpub\php_temp
sys_temp_dir = C:\inetpub\php_temp
session.save_path = C:\inetpub\php_temp
设法追踪到两个奇怪的罪魁祸首。
主要的超时问题是:
user_ini.filename =
默认情况下它在 php.ini 中被注释掉,因此删除分号会禁用该功能,该功能在文件共享上搜索 ini 文件时一定会遇到问题。
5.x 上的第二个问题似乎与启用旧的 mysql 插件有关。启用它在本地磁盘上似乎无关紧要,但启用它会导致文件共享出现问题。我在代码中使用 mysqli,所以为我禁用它没问题。
我有一个新的 IIS 10 / Server 2019 服务器,它使用 SMB 文件共享来存储应用程序数据。我的问题是,对于 PHP 站点,一个简单的 "hello world" 网站启动大约有 2 分 15 秒的延迟。更奇怪的是,它在所有 PHP 7.x 的网站上都这样做,但在 5.x 上不这样做,除非它是像 Mediawiki 这样更复杂的网站。它也仅在通过文件共享加载时执行此操作,否则可以快速访问。第一次加载后,它会快速运行大约 3 分钟,直到任何加载的进程都必须再次从头开始重新加载。使用错误日志,我可以看到 PHP 会立即加载 ini,并会立即抱怨格式错误等,但 php 页面的第一行直到最后一秒才会加载。 PHP xdebug 似乎直到加载的最后一秒才注意到任何东西。
确实看起来有些东西正在尝试解决并超时,但是使用 //192.168.1.x 并不比 //fileshare 更好。我已经通过 php.ini 寻找罪魁祸首,但找不到。非常感谢任何帮助!
我搞砸的主要设置是下面的设置,它们具有不同的组合和编写路径的方式。
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
fastcgi.logging = 0
track_errors = Off
soap.wsdl_cache_dir = C:\inetpub\php_temp
error_log = "C:\inetpub\php_errors\php_error73.txt"
upload_tmp_dir = C:\inetpub\php_temp
sys_temp_dir = C:\inetpub\php_temp
session.save_path = C:\inetpub\php_temp
设法追踪到两个奇怪的罪魁祸首。
主要的超时问题是:
user_ini.filename =
默认情况下它在 php.ini 中被注释掉,因此删除分号会禁用该功能,该功能在文件共享上搜索 ini 文件时一定会遇到问题。
5.x 上的第二个问题似乎与启用旧的 mysql 插件有关。启用它在本地磁盘上似乎无关紧要,但启用它会导致文件共享出现问题。我在代码中使用 mysqli,所以为我禁用它没问题。