在Linux下使用php連線oracle database

之前看網路上的資料,使用php連線oracle都不成功,今天剛好有空,就來測一下吧!

網路上的資料,大多都是教大家怎麼在Windows下使用appserver來連線oracle database,也有人介紹ODBC的方式來抓資料,但是ODBC是微軟的產品,並不是所不尚平台上都有這個元件可以呼叫,而且也為了系統穩定度,linux下開發php一直是小弟我的工作需要。之前看了某一篇文章,介紹linux下使用php連線oracle db,但是測試失敗,由於沒有急迫性,所以也就沒有繼續測下去,現在,急迫性出現,剛好今天晚上也有空,那就來測試一下吧!

測試的環境如下

一、CentOS 5.3
二、內建的php
三、內建的OCI連接元件

也就是說,灌好CentOS Linux就可以直接連Oracle了,之前網路上的給的概念都有一些些問題。

其實,今天測起來還蠻順的,在linux下使用php連接oracle db的動作如下

1.檢查php.ini 看看extension有沒有 oci8.so

檢查php中是不是有orcale的連接元件

2.使用OCI指令來寫個測試的PHP
<?php
oci_connect();
?>
這個只是測試oci元件是不是正常運作
當然,會出現錯誤訊息,因為沒有給足夠多的參數,正常畫面如下

2009-09-30_205400.jpg
3.寫個oracle DB連線的php吧
$con=oci_connect(‘user’,’password’,’db’) or die (‘Fail to connect Oracle DB’);
對oracle 來說,資料庫稱為user,因為它是先規劃table space(SID),再在table space上建立user,再在user中建資料表。
不過,第三個參數講成db名稱是怪怪的,我是使用SID才連線成功的,因為兩台linux是不同一台。

php原廠文件說 db是選擇性的,請參考這裡,內容可能是orcale 的instance或是tnsnames,如果沒有指定,PHP使用的環境變量ORACLE_SID和TWO_TASK確定的名稱,當地的Oracle實例和tnsnames.ora中相應的位置。

另外還可以指定字集,以及連線的模式,連線的模式可以是OCI_OPERATOR/OCI_SYSDBA,假設要指定連線模式,還需要使用oci8.privileged_connect來設定。

$req=oci_parse($con,’sql statement’) or die (‘Fail to get data’);
oci_execute($req);
接下來就是取出資料了!可以用do while來把資料拿出來
當然也可以用for loop來做,就看各位看官的習慣囉!

while ($row=oci_fetch_assoc($req)){
foreach ($row as $item){
echo $item. “\n”;
}
}

oci_fetch_assoc應該是計算有多少筆資料的涵式

測試結果,成功使用php連接鼎新tiptop GP5,tiptop GP5是使用linux版的oracle 11G,我看日後有一些報表的開發,真的可以自己來囉!另一套使用oracle的系統也是11g,不過是在windows server 2003 R2上,所以還要再找時間去測看看!

地圖日記功能越來越像facebook(非死不可)

在最近接觸到facebook之後,我發現地圖日記的首頁功能越來越像facebook,完全在第一頁就可以看到好友動態,這個功能,其實很多社群網站都,只是,一開始地圖日記的功能是沒有的。

另外,地圖日記可以發文到facebook中,我不清楚是用什麼方式,但是我好奇的是,會不會自動發文,反正facebook的帳號密碼都存了,自動貼到facebook,也是不錯的,要不然請地圖日記提供rss,讓facebook來抓也行,這樣更省時省力,顧一個地方就好,其他的,自動更新,真的省力多了。

老美也會廣告不實

前一篇寫了「If you over usage the CPU & Memory in a hosting server」,看的懂內容的朋友,應該就知道我在說什麼了。

因為我的站被我hosting的廠商給暫時停權了。
從網站停權到復效,總共花了快要14個小時,
為了這件事情,我還蠻不開心的,所以我才會寫了一篇英文的文來描述(罵)這件事。
當然,罵人就是要讓人家看的懂,老美,你們的服務,實在是太不老實了。

Read more

MSN又強迫升級了

知名IM(instant messager,即時訊息)軟體MSN messager(以下稱為MSN),又強迫大家更新了,如果不更新就不能使用。

因為MSN在8.5版之後,加入了語音的功能,對系統來說,是使用不到的,我想,他們的主要目標是skype,但是加了這個功能之後,MSN常常當掉,為求穩定度,好只是好降級回來。

我在網路上抓到的穩定安裝版是8.1版,現在升級又不知道要升到幾版了,爛東西一個,再這麼爛,我就去換其他軟體,反正目的是用MSN和朋友聯絡,有一堆相容軟體可以用,不用受限於MSN,而且還不用看煩人的每日焦點和閃來閃去的廣告,你說是吧!

Read more

寫jQuery網頁,你必須要做的檢查

之前寫jQuery的網頁,是在Firefox裡面測試的
整個運作都很正常
網頁正式放上去之前
使用IE進行了一次測試
有一個地方,就是跑起來不正常
怎麼去改寫,結果都一樣
只是一個簡單輸入的判斷
在FireFox中怎麼執行都正常
在IE中,檢查都不會通過

不死心,再使用Google的Chrome來測試一下
很不幸的,結果也一樣是正常的
所以,可以很明確的判斷
IE在運行jQuery時會跑出很多令人意想不到的結果

所以,各位寫jQuery程式的朋友,請使用多個Browser進行測試吧!

重覆收到同一封信多次

先讓我們認識兩個詞﹕MUA 和 MTA ﹐它們分別是 Mail User Agent 和 Mail Transfer Agent 的意思。MUA 從字面上看似乎好容易給它嚇死﹐但說穿了您可能會笑耶﹕我們平時用的 Outlook Express﹑Netscape Mail﹑或是 Linux 上面的 pine ﹐它們都是 MUA 。簡單說﹐MUA 是用來給使用者流覽郵件和書寫郵件的程式。那什麼是MTA呢?簡單的來說,就是mail server,因為MUA把信丟給MTA之後,MTA就開始和其他MTA進行資料交換的動作,各位可能很有經驗,傳給5M/8M的Email,一下子就傳完了,其實只是把信件傳給MTA(mail server),MTA放在佇列後,才慢慢的把信傳送出去,假設有幾十封信同時在傳也是一樣,Mail Server(MTA)在多工(要看開多少,視資源而定;多線程/多執行緒)運作下,也是一封一封信的處理。 Read more