2010-01-19 91 views
1

我們有一個持續的問題,其中php 5.2.6將退出連接到Oracle 10.2.0.4.0。我們可以幾周沒有任何問題,然後(通常是星期六上午),php將不能再連接。數據庫已啓動並運行,我們可以使用varous DB工具手動連接它,但在重新啓動Web服務器之前,php將無法再次連接。 Web服務器正在運行IIS 6.0。php退出連接到Oracle

我們使用$ connection = oci_connect($ userID,$ password,$ TNS)進行連接,其中$ TNS是本地tnsnames.ora文件中的適當TNS。我們通過我們的數據中心的連接管理員,但我不知道有關如何工作的細節。

這一直困擾着我們的原因之一是,我們不確定是誰造成了這個問題,各種日誌並沒有說明這一點。這是一個PHP問題,因爲它會出現,或者是數據庫本身出於某種原因拒絕連接,或者它可能是連接管理器?有些意見認爲這將有很大幫助。週末我們的負載較輕,所以應該是問題。我們一直無法找到任何可能引發問題的外部流程。

+0

當你的Web服務器和數據庫服務器之間的連接失敗,有你: *轉向PHP錯誤報告嗎?當您調用oci_connect時,錯誤消息是什麼? *從Web服務器ping數據庫服務器? *將P​​HP環境變量(尤其是與OCI8相關的變量)與連接失敗之前的變量進行了比較? – Blair 2010-01-20 05:34:21

+0

查看PHP錯誤日誌後,此中斷與以前的中斷完全不同。我不確定,但我認爲在以前的中斷,沒有任何寫入錯誤日誌文件。在這種特殊情況下,它有一堆的「ORA-12154:TNS:無法解析指定的連接標識符......」這使我懷疑,在這種情況下,問題不是PHP,但DATABSE消息。 – user39653 2010-01-21 14:15:08

回答

0

並非真正的「根本原因」解決方案,但如果您不使用FastCGI,則切換到FastCGI可能有助於解決此問題。 FastCGI中的PHP過程不能持續數週。由於Oracle客戶端動態加載到PHP的過程中,自動重新啓動的過程與你得到的FastCGI應該是相同的Web服務器重啓。您可以隨時調整FastCGI設置以重新啓動過程。

如果您使用的是ISAPI,那可能是您的根本原因。合併時PHP和ISAPI是壞消息。問題幾乎是不可避免的。

+0

我查了一下,實際上我們使用的是ISAPI,我認爲這是兩者中最好的。你是否說在使用ISAPI時,這個過程基本上是永遠運行的,最終會導致一個問題,但是FastCGI會自動啓動和停止這個過程,從而避免這種複雜性?如果是這樣,使用FastCGI與ISAPI相比有什麼不利之處? – user39653 2010-01-21 14:18:44

+0

FastCGI是在IIS上使用PHP的推薦方法(由MS和Zend推薦)。沒有理由使用PHP + ISAPI。沒有缺點。 – 2010-01-21 16:48:04