亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2612 | 回復(fù): 1
打印 上一主題 下一主題

php在Linux下同時(shí)連接Sybase和SqlServer [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-01-06 16:04 |只看該作者 |倒序?yàn)g覽
php在Linux下同時(shí)連接Sybase和SqlServer





系統(tǒng)環(huán)境

OS:Redhat AS4.0

php:4.4.7

Apache:1.3.9



此環(huán)境為幾年前配置的版本。

php和apache為源碼編譯。之前因?yàn)樾枰B接sybase所以php已經(jīng)支持對sybase的支持。sybase版本15,編譯參數(shù):

--with-sybase-ct=/opt/sybase/OCS-15_0



最近程序需要連接SQL SERVER2000,所以要再次基礎(chǔ)上增加mssql的支持。首先想到的是freetds。



官方網(wǎng)站:http://www.freetds.org/

用戶手冊:http://www.freetds.org/userguide

下載源碼按照網(wǎng)站說明編譯。編譯參數(shù):





Shell代碼
  1. 1../configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib   
  2. 2.make   
  3. 3.make install  
  4. ./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib
  5. make
  6. make install  
復(fù)制代碼
安裝后執(zhí)行/usr/local/freetds/bin/tsql -C,顯示如下信息表示安裝成功。





Shell代碼
  1. 1.Compile-time settings (established with the "configure" script)   
  2. 2.                            Version: freetds v0.91  
  3. 3.             freetds.conf directory: /usr/local/freetds/etc   
  4. 4.     MS db-lib source compatibility: yes   
  5. 5.        Sybase binary compatibility: no   
  6. 6.                      Thread safety: yes   
  7. 7.                      iconv library: yes   
  8. 8.                        TDS version: 7.1  
  9. 9.                              iODBC: no   
  10. 10.                           unixodbc: no   
  11. 11.              SSPI "trusted" logins: no   
  12. 12.                           Kerberos: no  
  13. Compile-time settings (established with the "configure" script)
  14.                             Version: freetds v0.91
  15.              freetds.conf directory: /usr/local/freetds/etc
  16.      MS db-lib source compatibility: yes
  17.         Sybase binary compatibility: no
  18.                       Thread safety: yes
  19.                       iconv library: yes
  20.                         TDS version: 7.1
  21.                               iODBC: no
  22.                            unixodbc: no
  23.               SSPI "trusted" logins: no
  24.                            Kerberos: no
復(fù)制代碼
接下來重新編譯php,在原編譯參數(shù)下增加如下參數(shù)





Shell代碼
  1. 1.--with-mssql=/usr/local/freetds  
  2. --with-mssql=/usr/local/freetds  
復(fù)制代碼
繼續(xù)make && make install



在make install時(shí)發(fā)現(xiàn)提示如下警告信息:



警告信息 寫道
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_connect in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_pconnect in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_close in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_select_db in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_query in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_free_result in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_get_last_message in Unknown on line 0
.......

[10-Dec-2011 15:08:34] PHP Warning: Function registration failed - duplicate name - mssql_fetch_array in Unknown on line 0
[10-Dec-2011 15:08:34] PHP Warning: Function registration failed - duplicate name - mssql_fetch_object in Unknown on line 0
[10-Dec-2011 15:08:34] PHP Warning: Function registration failed - duplicate name - mssql_data_seek in Unknown on line 0
[10-Dec-2011 15:08:34] PHP Warning: Function registration failed - duplicate name - mssql_field_seek in Unknown on line 0





沒在意此提示,繼續(xù)看phpinfo。發(fā)現(xiàn)mssql和sybase已經(jīng)都支持了。

編寫測試代碼鏈接mssql。發(fā)現(xiàn)始終無法連接。開始google查找總結(jié)如下:

sybase和mssql最早同出一族在php中函數(shù)通用。同時(shí)在freetds中也發(fā)現(xiàn)可以使用mssql_connnect同時(shí)連接sybase和msssql數(shù)據(jù)庫。為證實(shí)此說法,編寫php文件打印sybse-ct模塊函數(shù)列表。





Php代碼
  1. 1.<?php   
  2. 2.print_r(get_extension_funcs('sybase-ct'));  
  3. <?php
  4. print_r(get_extension_funcs('sybase-ct'));
復(fù)制代碼
在執(zhí)行頁面發(fā)現(xiàn)打印出來sybase和mssql的所有函數(shù)。所以在php編譯安裝時(shí)會提示上面顯示的那些警告信息。就是說sybase模塊支持中已經(jīng)增加了mssql的函數(shù)支持。那么是不是不需要mssql的模塊是不是也可以連接mssql呢?接著重新編譯php去掉php的mssql的模塊。使用mssql函數(shù),發(fā)現(xiàn)函數(shù)是能用。但是就是無法連接到指定的mssql。可能是我這里的配置問題。調(diào)整了很多參數(shù)還是連不上。



最終放棄了這個(gè)做法。使用freetds同時(shí)連接sybase和mssql。繼續(xù)重新編譯。寫代碼測試發(fā)現(xiàn)還是不行(2個(gè)不能同時(shí)都好使)。那么有沒有第三種方法呢?google也沒有發(fā)現(xiàn),自己思考是否可以各自使用自己的函數(shù),互不影響。sybase繼續(xù)使用原來的/opt/sybase/OCS-15_0,sqlserver使用freetds呢。



開始嘗試,首先要看php的sybase擴(kuò)展模塊代碼。

打開/opt/php/php4.4.7/ext/sybase_ct/php_sybase_ct.c,終于有發(fā)現(xiàn)。

sybase擴(kuò)展模塊的所有函數(shù)注冊都在這個(gè)文件中,找到如下記錄:





Cpp代碼
  1. 1.PHP_FALIAS(mssql_connect, sybase_connect, NULL)   
  2. 2....   
  3. 3.PHP_FALIAS(mssql_deadlock_retry_count, sybase_deadlock_retry_count, NULL)  
  4. PHP_FALIAS(mssql_connect, sybase_connect, NULL)
  5. ...
  6. PHP_FALIAS(mssql_deadlock_retry_count, sybase_deadlock_retry_count, NULL)
復(fù)制代碼
于是試著將mssql_開頭的函數(shù)都注釋掉。保存。

開始編譯php,編譯參數(shù)同時(shí)增加sybase和mssql的支持:





Shell代碼
  1. 1.--with-sybase-ct=/opt/sybase/OCS-15_0   
  2. 2.--with-mssql=/usr/local/freetds  
  3. --with-sybase-ct=/opt/sybase/OCS-15_0
  4. --with-mssql=/usr/local/freetds
復(fù)制代碼
繼續(xù)

make && make install。

這次沒有提示警告信息。暗喜!

編寫測試代碼測試。sybase和mssql都可以連接。終于成功了。



附:

sybase連接需要在/opt/sybase/interfac中配置服務(wù)器信息

mssql鏈接需要在/usr/local/freetds/etc/freetds.conf中配置服務(wù)器信息

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-01-06 16:05 |只看該作者
謝謝分享
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP