目前分類:PHP (72)

瀏覽方式: 標題列表 簡短摘要

這幾天花了點時間把 ZendServer CE 版的一些元件抽出來放到我自己包的 Portable APM 上,並且作了一些壓力測試的交叉比較。

 

先說結論:

  1. php5_module 的速度還是最快,但是在併發請求時會失敗
  2. fcgid_module 在併發請求時比 php5_module 還要不穩定,失敗連連,所以這次比較不加入這個

HACGIS 發表在 痞客邦 留言(0) 人氣()

PHP 5.3 Release 出來已經有一段時間了,不過我一直沒有去升級,原因之一是 XCache 沒跟上。


現在 XCache 1.3rc1 已經可以對應 PHP 5.3 了,連 XDebug 2.0.5 也跟上了,所以我也沒啥藉口~


之前在測試時,phpMyAdmin 一直有問題,後來我找到原因了,是因為 phpMyAdmin 的某一行設定的緣故。

HACGIS 發表在 痞客邦 留言(1) 人氣()

原文在此 http://www.jaceju.net/blog/?p=375


剛好我去年曾經實做過 DB Layer,對於抽象我有自己的看法。


首先相對於抽象,在編程上就是實做,換言之,抽象是訂定實做規格前必要的手段。

HACGIS 發表在 痞客邦 留言(0) 人氣()

今天在處理一個日期比較的問題,發現 DateTime 類別可以進行 1970/01/01 以前的日期比較,不過由於該類別建構式比較嚴格,所以我將他繼承後擴充改寫了一番。
程式碼在下面:

class Zyme_DateTime extends DateTime{
    function __construct($時間 = null, $時區 = null){
        if ($時間 instanceof DateTime) {

HACGIS 發表在 痞客邦 留言(0) 人氣()


xdebug 的報錯功能非常好用,但由於沒有 nts 的版本,一直以來是我心中的缺憾。
這兩天花了一點時間研究,寫出一個替代用的報錯物件,除了時間和記憶用量無法顯示外,其他都可以做到接近 xdebug 的報錯功能。
我還加上顯示出現錯誤的源碼片段、傳入參數的功能,這個物件還可以繼續改加以完善。

用法:

HACGIS 發表在 痞客邦 留言(0) 人氣()

今天我的老闆交代我在 Server 上裝一份新的 SugarCRM ,原以為是個很簡單的事情,結果花了一整天~
原因出在 SugarCRM 在安裝過程中,檢查 MySQL 連線設定那部份一直過不了,可是在同一台機器上,另外一份之前安裝過的 SugarCRM 卻跑的好好的~

我以為是 PHP 版本問題,從 PHP4 升級、換成 PHP5 都不行~
後來以為是 MySQL 的問題,重裝、換了 5.1 的版本也不行~

HACGIS 發表在 痞客邦 留言(0) 人氣()

算是在實做過程中發現一些問題,然後重構這個強力工具!

我知道我目前碰到一個危險的境界,由於這個插件的類別非常強力,我經常拿他來替代繼承,我知道有點過頭了,但它真的很好用!
~我是說你可以維持一個物件變數,然後把需要功能一直掛入(只要你繼承這個抽象的插件類別,寫出你需要的功能)~

HACGIS 發表在 痞客邦 留言(4) 人氣()

由於名稱空間的諸多限制,以及 PHP 5.3 的 call_user_func_array 傳遞參照參數陣列 與 &new 的 Deprecated 警告問題,個人決定還是先將開發平台維持在 PHP 5.2.5 上面。
名稱空間的限制還好,但後面那兩個會造成許多現有的函式庫噴出一堆警告訊息,我沒時間一個一個去修,所以只好暫時放棄,等年底 PHP 5.3 出來一陣子後再看看。

HACGIS 發表在 痞客邦 留言(0) 人氣()

在使用上有幾個要注意的事情:

  • 使用 use 敘述必須至少有一項用::串接
use test; // 這是錯的
use test::test1; // OK

HACGIS 發表在 痞客邦 留言(0) 人氣()

根據 PHP 5.3 todo 的資訊,PHP 5.3 會在今年第二或是第三季推出,目前我正在考慮改用 5.3 的 namespace 功能加上類似ZF和PEAR的目錄結構來發展與佈署程式。
我放了一份修改過的 PortableAPM 在這裡,需要的人請自行取用。

使用時要注意 mysql 的部份,由於新引進 mysqlnd 的關係,所以即便是可以用 dl 來載入,對於 mysql 相關的 extension 最好在 php.ini 裡先載入。

HACGIS 發表在 痞客邦 留言(0) 人氣()

看了網路上幾個用PHP 實現單例模式的作法,我寫了一個比較簡單且通用的方式。
程式碼如下:

class _單例{
    final protected function __construct(&$類別, &$參數){
        $函數 = array($this, '_' . $類別);

HACGIS 發表在 痞客邦 留言(0) 人氣()

這次 DB Layer 的研發要告一段落,目前對於 MySQL 的資料庫已經可以做到匯入匯出的功能了,所以明後天程式重整完以後,接下來要先去作案子來把進度趕一下。

HACGIS 發表在 痞客邦 留言(0) 人氣()

話說 adodb lite 這套資料庫用的類別庫已經很久沒更新了,這套小巧的類別庫有一個很棒的功能,就是可以寫插件。
不過他寫插件的方法我不是很喜歡,正好我最近開始復工在寫的DB Layer也碰到這樣的難題:我想把功能分割出來,寫成可以共同合作的插件,需要什麼功能可以隨時加進去。
另外還有一點,我希望使用插件的方法時,其調用的方式等同於使用繼承的方式。

因此,我利用了PHP5的反映的功能,寫了一個插件用的抽象類別,只要繼承它,就可以簡單的寫出插件以及加入插件的功能。

HACGIS 發表在 痞客邦 留言(1) 人氣()

一直以來以為這兩個函數是等價的,今天心血來潮想知道這兩者在效率上有何差異,所以在網路上找了一些文章來看。
找到了CSDN的這篇討論,裡面說的很清楚,這兩個函數還是存在微妙的差異:在strtr中的替換字串長度必須等長,輸出結果才會與str_replace等價。

PING:
TITLE: PHP 函式 strtr() 與 str_replace() 之差異

HACGIS 發表在 痞客邦 留言(0) 人氣()

今天早上我老闆問了我一個問題:為何他在IE裡面下載SugarCRM裡面有中文檔名的檔案,存檔時帶出的檔名變成亂碼?

我直覺的覺得是IE和FF對於header的解釋不同的緣故,因為上禮拜我把SugarCRM裝好後有試過,在FF中是正常的~
為了證實我的想法,我把SugarCRM的download.php翻出來看了一下,果然發現一段if else的結構證明我的想法沒錯,兩種瀏覽器對於檔名解碼的方式有不同的作法。
現在重點來了,怎麼做才是正確的?

HACGIS 發表在 痞客邦 留言(1) 人氣()

這幾天在做SugarCRM 5.0.0b的翻譯工作,昨天開始正式動手,先從install的部份開始做起。
由於官方的wiki文件語焉不詳(好啦~我承認我的英文爛),所以去翻源碼找出手動掛載的方式。

先將SugarCRM 5.0.0b未翻譯的中文檔下載回來解開,並將未翻譯的中文檔的內容複製到SugarCRM的目錄中。
編輯SugarCRM目錄下的install.php,尋找以下幾行:

HACGIS 發表在 痞客邦 留言(1) 人氣()

下列這些extensions有些是因為缺少其他dll而無法掛入,有些則是掛入後PHP執行不正常。
;extension=php_blenc.dll
;extension=php_ibm_db2.dll
;extension=php_ifx.dll
;extension=php_ingres2.dll

HACGIS 發表在 痞客邦 留言(0) 人氣()

PHPSurveyor 1.48RC 用的中文翻譯檔,請解至 [phpsurveyor]/locale/cnt 下使用。
目前這個翻譯的進度只有 50%,本週比較忙碌,所以等週末時再抽空慢慢完成。

繁體中文翻譯檔

HACGIS 發表在 痞客邦 留言(0) 人氣()

(底下所有的GA指的是Google Analytics 的縮寫,而不是銀河天使,謝謝~)

剛剛看了石頭的這一篇:加入 Google Analytics 分析程式碼
我就回來看一下PIXNET有沒有加入GA的JS檔,結果發現PIXNET也有加,就照著石頭的作法把GA給的那段程式碼給塞進來。

HACGIS 發表在 痞客邦 留言(2) 人氣()

到今天為止,po檔的翻譯已經超過一半了,只剩下大約400條要翻譯。
不過今天在看Help檔時,發現樣板檔的說明並沒有翻譯,所以我也打算把它一併翻譯掉。

明天要休息一天,照目前進度來看,下週三可以把繁體中文的部份翻完。

HACGIS 發表在 痞客邦 留言(2) 人氣()

1 234