我们有一个使用 Yii 框架构建的 PHP 应用程序,它连接到 Oracle DB 并在配置了 Zend Core For Oracle 的 Apache 上运行。Apache 还在不同的端口上运行另一个应用程序。
我们有一个页面,它对数据库进行复杂的查询,大约需要 10 分钟才能运行。我们正在减少此查询所需的时间,但目前这是一个问题。
问题是,调用 PHP 页面后,其他页面均无响应,即使不查询数据库的页面也是如此。Apache 运行的其他应用程序不使用 Yii,而是使用不同的数据库,因此同样无响应。
为什么会发生这种情况?即使一个请求仍在运行,Apache 难道不能同时处理多个请求吗?
Apache 给出的错误如下,这应该是与数据库通信失败时给出的通用消息错误:
fcgi: 无法从 D:\Programmi\Zend\Core 读取 Oracle\bin\php-cgi.exe 的响应
我们没有触及太多默认的 Apache 配置,因此 maxClients 和 ServerLimit 应该设置为 256(默认)
知道去哪儿寻找问题吗?
答案1
无论如何,问题是,在调用 php 页面后,所有应用程序都“卡住了”,没有其他页面响应,即使是那些没有查询数据库的页面
您是否在该数据库中使用会话?PHP 以独占方式锁定会话文件,直到脚本完成执行。