我的PHP脚本在我的服务器IIS 7.5上执行一些程序 浏览器需要花费大约10分钟的时间执行,但错误大于正确 如何解决这个问题。
错误:
HTTP Error 500.0 - Internal Server Error
C:\php\php-cgi.exe - The FastCGI process exceeded configured request timeout
Module FastCgiModule
Notification ExecuteRequestHandler
Handler FastCGI
Error Code 0x80070102
php.ini设置:
fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0
max_execution_time = 0
upload_max_filesize = 20M
memory_limit = 128M
post_max_size = 30M
C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config fast-cgi的文件设置
<fastCgi>
<application
fullPath="C:\php\php-cgi.exe" activityTimeout = "3600" requestTimeout = "300" />
</fastCgi>
答案 0 :(得分:4)
我从这个source找到了另外一个设置,帮助我解决了我遇到的同样问题。 复制并粘贴:
打开服务器管理器
在服务器级别(非默认网站)
答案 1 :(得分:3)
这是对正在发生的事情的快速解释。当您使用PHP的CGI / FCGI配置时。 Web服务器(在本例中为IIS)将需要php处理的请求路由到PHP进程(与Web服务器分开运行)。
通常,为防止连接被卡住打开并等待(如果php进程发生崩溃),Web服务器只会等待一段时间让PHP进程返回结果(通常为30-60秒)。 / p>
在您的配置中,您有:
requestTimeout = "300"
300秒= 5分钟。 IIS将取消请求,因为您的请求需要10分钟才能完成。简单修复,将超时增加到600或更高。
现在,使用http请求运行脚本10分钟并不是一个好的设计模式。通常,http最适合短期请求。原因是进程的任何部分(服务器,代理或客户端)都可能存在超时,并且脚本可能会被意外中断。
因此,当您的Web应用程序具有这样的长时间运行作业时,运行它的最佳方式是通过控制台或作业队列。
答案 2 :(得分:0)
这可以通过调整fast-cgi配置来解决。 转到&#34; C:\ Windows \ System32 \ inetsrv \&#34; 并修改&#34; fcgiext.ini&#34; 文件
[PHP]
ExePath=C:\xampp\php\php-cgi.exe
MonitorChangesTo=C:\xampp\php\php.ini
ActivityTimeout=3600
IdleTimeout=3600
RequestTimeout=3600
确保放置ActivityTimeout,IdleTimeout&amp;在[PHP]部分中的RequestTimeout,如上所示。