2008年5月20日 星期二

PHP6的新特性

PHP的下一個版本,V6,包含了很的新特性和語法改進,會使它在面向物件方面性更易用。其他重要的特性:比如在核心函數中對Unicode (統一編碼)的支援,這意味著 PHP 6提供了更好的更可靠國際支持。

PHP已經很流行,被無數的站點使用,被大部分網際網路接入商所支援,被Yahoo這樣的大網路公 司使用著。在即將來臨的PHP版本中準備增加一些成功的新特性,使PHP在某些場合下更易用更安全。你準備好接受 PHP 6 了嗎?如果你明天就升級了,你的程式會運行得很好嗎?你該怎麼辦?這篇文章集合了PHP 6的改變,他們中的一些備份移植到版本的PHP v5.x,您目前的腳本可能需要進行一些調整。

如果你現在使用不是PHP,但是一直在考慮它,考慮一下它的新特性。這些特點,從Unicode的核心支持到XML支持,使它更容易為你寫的功能填補PHP的應用。

PHP 6 新特性

PHP 6當前已經作為開發者快照使用,所以你可以下載和試用一下這篇文章列出很多特性,這些特性已經在當前的快照中實現了。見資源

改進 Unicode 支援

PHP的核心函數中,有很多對Unicode 字串的支援的改進,這些新特性將產生巨大的影響因為它允許PHP為國際字元提供更多的支援。所以如果一個開發者或者架構師使用不同的語言,例如Java程式語言,是因為它具有超過PHP的國際化支持的話,當支持改進時他會花一點時間來考慮一下PHP

因為今天你已經可以下載到開發者版本的 PHP V6,你將看到一些功能函數已經支援Unicode字串。有一個函數清單已經被測試和驗證了完全可以處理Unicode,參見資源

命名空間

命名空間是一種避免因函數或者類之間的命名衝突而使你的函數和類以及方法無法讀取,而不使用首碼命名慣例的一種方法。因此,通過使用命名空間,你可以命名別人可能已經使用的類名,而不用擔心在運行時會出錯。表一提供了一個在PHP中使用命名空間的示例。

您不用在源代碼中做更新或更改,因為你寫的任何PHP代碼可以不包含命名空間而運行得很好。因為命名空間特性似乎會移植到PHP 5.3 X中,如果它可以使用,您可以在自己的程式中引用命名空間。

表一,命名空間示例

php
// I'm not sure why I would implement my own XMLWriter, but at least
// the name of this one won't collide with the one built in to PHP
namespace NathanAGood;
class XMLWriter
{
// Implementation here...
}

$writer = new NathanAGood::XMLWriter();

?>

Web 2.0 特性

依賴於你怎麼使用PHP和你現在腳本的是什麼樣子的,現在的語言和語法差異,可能會或者不會最大程度的影響下面一些特性,這是指那些直接讓你引用的Web 2.0功能到你的PHP應用程式。

SOAP

SOAP是一種網路服 務說話的協定,並且支援不少其他語言,例如Java和微軟的.NET,雖然有其他的方法來驅動和使用網路服務,比如 表像化狀態轉變(Representational State Transfer RESTSOAP仍然在使不同平臺具有可操作性中是最常用的。此外,SOAPPHP擴展和PEAR庫中使用,SOAPPHP中默認是不支持的,因 此你啟用這個擴展或者叫你的ISP啟用。此外,PEAR包允許你建立SOAP用戶端和伺服器,如SOAP包。

如果你改變了默認設置,SOAP將會在PHP 6中啟用。這個擴展將提供你很容易的的實現SOAP用戶端和SOAP服務,允許你編寫的應用提供使用或者網路服務。

如果SOAP擴展是默認設置,那就意味著你不能在PHP中設置它們,如果您開發的PHP應用程式並且它們發佈到一個ISP伺服器上,您可能需要檢查一下你的ISP,以驗證SOAP並啟用為他們升級。

XML

PHP 5.1XMLReader XMLWriter已經變成PHP核心的一部分,這使你工作起來更輕鬆如果在你的PHP程式中需要使用到XML的話。和SOAP擴展一樣,如果你使用SOAP或者XML這是個好消息因為PHP 6比已經出爐的PHP4 更適合你。

被刪除的東西

除了具有的一些新功能,PHP 6引擎將刪除一些在前面版本中已經有的功能。大部分這些功能,如register_globals safe_mode 在目前的PHP中被視為破的。因為他們可能會暴露一些安全風險。PHP在努力的清除中,在下一個版本中這些將從PHP中刪除或者廢棄。反對者認為大部分ISP或者企業會保留現在的腳本因為升級到PHP6會破壞現在的的腳本,但是支持者認為很高興看到PHP團隊修補了這些漏洞,並且提供了一個乾淨,安全的運行工具。

將從PHP刪除的功能有:

magic_quotes register_globals register_long_arrays safe_mode

更詳細情況請看這裏:IBM 社區

2008年5月13日 星期二

PHP常用語法

顯示所以錯誤訊息
error_reporting(E_ALL);

error_reporting(E_ALL);
ini_set("display_errors", 1);

取消時間限制
set_time_limit (0);

2008年5月10日 星期六

php上顯示高亮度語法的套件

GeSHi - 程式碼色彩顯示工具(Highlighter)
GeSHi 原本是為了 phpBB 所做的顯示程式碼的工具,後來自己讀力為單獨的程式,提供php開發者製作程式碼有色彩顯示的文字區塊, 使用如下:

include_once('geshi.php');
$geshi = new GeSHi($source, $language);
echo $geshi->parse_code();



$source 程式碼
$language所使用的語言

透過一個物件並指定你要顯示的程式語言後,就可以幫你產生漂亮的程式碼囉。在官方網站首頁的右下角 Demonstration 就有提供馬上測試的功能,輸入你的程式碼並且選擇語言,就可以立即測試。

官方網站 http://qbnz.com/highlighter/

php鎖網段

這篇不錯的文章

方便你在寫程式時
需要對權限做控制的設定

php網頁鎖網段


http://blog.blueshop.com.tw/omusico/archive/2007/03/14/50002.aspx

基於PHP的搜尋引擎

在使用了google後

覺得如果能夠設計一隻,能幫自己上網去摘錄想要關鍵字

於是開始計畫幫自己養一隻蜘蛛。


在PHP上有一套開放原始碼的垂直搜尋引擎的產品

phpdig官網
http://www.phpdig.net/


目前版本我看到是停留在2005年
先下載他的原始碼來分析一下該如何做。

主要想了解的是,分析一個網頁後,會對該網頁建立一個詞彙表
方便統計,也加速查詢~~

而且他也支援需多不同的格式,例如PDF,Word,Excel,PowerPoint

目前得知的是phpdig對中文依然有問題~~

先看他的程式碼,有心得在繼續分享...

2008年5月7日 星期三

PHP連接MySQL的容錯

假設我們的環境是有兩台Mysql資料庫Server

讓我們 網站存取資料

如果其中一台資料庫服務中斷

我們要如何在 PHP程式中 防範

首先mysql_connect沒有辦法
讓我們設定連線 超時時間~~

所以必須藉助比較底層的函式

fsockopen

這函式可以設定超時時間,不在時間內連線,就切換資料庫

if(fp = fsockopen($one, 3306, &$errno, &$errstr, $timeout)){
fclose($fp);
return $link = mysql_connect($first, $username, $password);
}else{
return $link = mysql_connect($second, $username, $password);
}

$first //主要資料庫
$second //備援資料庫

如果第一個資料庫停擺,可以透過PHP容錯

2008年5月1日 星期四

PHP連MSSQL

要能夠讓CentOS連上MSSQL



先要裝幾個套件




  • php-mssql

  • freetds

  • unixODBC

執行yum insatll php-mssql他會依套件相依性,會自動


幫你安裝其他兩個!!


安裝好後修改php.ini


vim /etc/php.ini


我是在622行加入extension=mssql.so;


依系統不同請自行尋找適合的位置


修改好後將你的Apache Server重新啟動


service httpd restart

如果正常的話可以看到下面這個圖示


接下來修改freetds.conf


vim /etc/freetds.conf



Also bump the tds version to 8.0, since you said you were using SQL Server 2005.



我們要用的是微軟的SQL Server2005 (管理工具使用SSMSE)所以修改設定如下


[mssql2005]


host=192.168.1.1


port=1433


tds version=8.0

client charset = UTF-8  ; 如果網頁是 utf-8 編碼,就要加入這一行,注意是 UTF-8 大寫