3

在我的 php 应用程序中,我恢复了 db2 数据库。它工作正常,但这是一个巨大的 2.9GB,以500 - Internal Server Error.

我使用 exec() 从 .php - cp、db2 等运行 unix shell 命令。从 firefox 或 ruby​​ 脚本运行时会发生同样的错误。

我必须先复制备份映像文件,这需要几分钟。然后我调用 db2 来恢复图像。对于这个特定的数据库,php 进程以上述错误结束。然后我可以在错误日志文件中找到它

2012-08-02 10:25:18: (mod_fastcgi.c.2566) unexpected end-of-file (perhaps the fastcgi process died): pid: 0 socket: tcp:127.0.0.1:9090
2012-08-02 10:25:18: (mod_fastcgi.c.3352) response not received, request sent: 2758 on socket: tcp:127.0.0.1:9090 for /wrational/tools/rationalTest.php?mode=restore&database=RATIONAL&from_database=dbb&dbbackuptype=weekly, closing connection

我在 php.ini 中将default_socket_timeout和都设置max_execution_time为 5660 并确认它是由设置的,phpinfo()但它看起来没有帮助。

知道如何使这个工作吗?

更新

看起来它会在 40 分钟后死亡。access.log 文件中的相应行如下所示

"GET /rational/tools/rationalTest.php?mode=restore&from_database=dbb&dbbackuptype=weekly HTTP/1.1" 500 369 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:11.0) Gecko/20100101 Firefox/11.0"
4

1 回答 1

1

看起来 php-fpm.ini 中的 request_terminate_timeout 选项引起了麻烦。设置为 30 分钟。我将其更改为 0,到目前为止它看起来不错。不过需要做更多的测试。

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.  
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
于 2012-08-06T01:27:33.377 回答