PHP, JavaScript, Ajax, jQuery, ActionScript, Flex, AIR, Facebook App, Linux, Apache, MySQL...

2010年12月29日 星期三

[Linux]在 XAMPP 上安裝 xCache

因為XAMPP的目錄結構不同,所以使用一般安裝方式會出現錯誤。

1.要先安裝 XAMPP 的 開發套件(development package):
網址:http://www.apachefriends.org/zh_tw/xampp-linux.html

下載完成後,只要輸入下列命令:
[root@localhost ~]# tar xvfz xampp-linux-devel-1.7.3a.tar.gz -C /opt

這樣就完成開發套件的安裝了。

2.下載 xCache:
網址:http://xcache.lighttpd.net/

下載完成後,輸入下列命令:
[root@localhost ~]# tar xjvf xcache-1.3.1.tar.bz2
[root@localhost ~]# cd xcache-1.3.1

3.執行phpize:
[root@localhost xcache-1.3.1]# /opt/lampp/bin/phpize

4.Configure the extension :
[root@localhost xcache-1.3.1]# ./configure --enable-xcache --with-php-config=/opt/lampp/bin/php-config

5.執行 'make' 來取得編譯後的 xcache.so :
[root@localhost xcache-1.3.1]# make
[root@localhost xcache-1.3.1]# make install

7.設定 php.ini
[root@localhost xcache-1.3.1]# cat xcache.ini >> /opt/lampp/etc/php.ini
[root@localhost ~]# vi /opt/lampp/etc/php.ini

找到以下內容並修改:
[xcache-common]
;; install as zend extension (recommended), normally "$extension_dir/xcache.so"
zend_extension = /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/xcache.so

[xcache.admin]
xcache.admin.user = "test"
xcache.admin.pass = "098f6bcd4621d373cade4e832627b4f6"

[xcache]
xcache.size = 64M

需注意的地方:
xcache.admin.pass 填入的是 MD5後的字串
xcache.size是 XCache 使用的記憶體量,預設是 0 (Off),當然要打開,大小自訂

8.最後重啟 Apache:
[root@localhost ~]# /opt/lampp/lampp stopapache
[root@localhost ~]# /opt/lampp/lampp startapache

記得使用 phpinfo() 來檢查 extension 是否安裝成功。

2010年7月21日 星期三

[Linux] 重新編譯 PHP 時出現錯誤的解決方式

在編譯 PHP 的時候可能會出現找不到套件或套件錯誤的錯誤訊息。


找不到 apxs 路徑

在重新編譯 PHP 時出現找不到 apxs 路徑的錯誤訊息:
./configure: /usr/sbin/apxs: No such file or directory

解決方式如下:
1.安裝Apache的擴展套件apxs,這是httpd-devel之中的一個套件,可以用yum將其安裝:
# yum -y install httpd-devel

2.利用指令確認安裝位址:
# which apxs
/use/sbin/apxs


找不到 xml2-config

在編譯 PHP 的時候出現找不到 xml2-config 的錯誤訊息:
configure: error: xml2-config not found. Please check your libxml2 installation.

解決方式:
使用 yum 安裝 libxml2 及 libxml2-devel 套件:
# yum -y install libxml2 libxml2-devel


OpenSSL 錯誤

錯誤訊息:
Checking for pkg-config… /usr/bin/pkg-config
configure: error: Cannot find OpenSSL’s

重新安裝 openssl 及 openssl-devel:
# yum install openssl openssl-devel


Bzip2 錯誤

錯誤訊息:
Configure: error: Please reinstall the BZip2 distribution

如果出現 Bzip2 的錯誤,可以重新安裝 bzip2。
因為 yum 找不到 bzip2 套件,可直接去官網下載:
http://www.bzip.org/

下載完後執行安裝:
# tar zxvf bzip2-1.0.5.tar.gz
# cd bzip2-1.0.5
# make install
# yum -y install openssl-devel


gmp 錯誤

錯誤訊息:
configure: error: Unable to locate gmp.h

重新安裝 gmp-devel:
# yum -y install gmp-devel


curl 錯誤

錯誤訊息:
Configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/

重新安裝 curl-devel:
# yum install curl curl-devel


libjpeg 錯誤

錯誤訊息:
Configure: error: libjpeg.(also) not found.

重新安裝 libjpeg-devel 及 libjpeg:
# yum install libjpeg libjpeg-devel


libpng 錯誤

錯誤訊息:
Configure: error: libpng.(also) not found.

重新安裝 libpng-devel 及 libpng:
# yum install libpng libpng-devel


freetype 錯誤

錯誤訊息:
Configure: error: freetype.h not found.

重新安裝 freetype-devel:
# yum install freetype-devel


libmcrypt 錯誤

錯誤訊息:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.

重新安裝 libmcrypt 及 libmcrypt-devel:
# yum install libmcrypt libmcrypt-devel


MySQL 錯誤

錯誤訊息:
Configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!

重新安裝 mysql-devel:
# yum install mysql-devel



ncurses 錯誤

錯誤訊息:
Configure: error: Please reinstall the ncurses distribution

重新安裝 ncurses 及 ncurses-devel:
# yum install ncurses ncurses-devel


unixODBC 錯誤

錯誤訊息:
Checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h’ not found!

重新安裝 unixODBC-devel:
# yum install unixODBC-devel


pspell 錯誤

錯誤訊息:
Configure: error: Cannot find pspell

重新安裝 pspell-devel:
# yum install pspell-devel



mcrypt 錯誤

錯誤訊息:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.

重新安裝 libmcrypt 及 libmcrypt-devel:
# yum install libmcrypt libmcrypt-devel


snmp 錯誤

錯誤訊息:
Configure: error: snmp.h not found. Check your SNMP installation.

重新安裝 net-snmp 及 net-snmp-devel:
# yum install net-snmp net-snmp-devel

2010年7月16日 星期五

[MySQL] REPAIR TABLE (修復資料表)和 OPTIMIZE TABLE (優化資料表)


修復資料表

語法:REPAIR TABLE `table_name`

用於修復被破壞的資料表。


優化資料表

語法:OPTIMIZE TABLE `table_name`

用於回收閒置的資料庫空間。

當資料表上的資料行被刪除 時,所佔據的磁碟空間並沒有立即被回收,使用了OPTIMIZE TABLE命令後這些空間將被回收,並且對磁碟上的資料行進行重排(注意:是磁碟上,而非資料庫)。
多數時間並不需要運行OPTIMIZE TABLE,只需在批量刪除資料行之後,或定期(每週一次或每月一次)進行一次資料表優化操作即可,只對那些特定的表運行。

[MySQL]解決 MySQL server has gone away 問題

應用程式(比如PHP)長時間的執行批量的MYSQL語句。執行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob欄位。比如,圖 片資料的處理。都容易引起MySQL server has gone away。

主要可能是因為以下幾種原因:

1、應用程式(比如PHP)長時間的執行批量的MYSQL語句。最常見的就是採集或者新舊資料轉化。
解決方案:
在my.cnf檔中添加或者修改以下兩個變數:
wait_timeout=2880000
interactive_timeout = 2880000
關於兩個變數的具體說明可以google或者看官方手冊。如果不能修改my.cnf,則可以在連接資料庫的時候設置 CLIENT_INTERACTIVE,比如:
sql = "set interactive_timeout=24*3600";
mysql_real_query(...)


2、執行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob欄位。比如,圖片資料的處理
解決方案:
在my.cnf檔中添加或者修改以下變數:
max_allowed_packet = 10M(也可以設置自己需要的大小)
max_allowed_packet 參數的作用是,用來控制其通信緩衝區的最大長度。

2010年6月27日 星期日

[Flex]利用 HTTPService 傳送與接收資料 (與PHP溝通)

在 Flex 中可以利用 HTTPService 來與服務器端做通訊,在這裡用一個簡單的範例來實作 Flex 與 PHP 溝通。

1.在 Flex 中將參數以 POST 方式傳遞出去,並接收回傳的 XML 做處理。
Flex 程式碼:


    
        
    
    
    
    


2.PHP 處理 POST 過來的資料,並回傳 XML。
PHP 程式碼:
$param1 = $_POST['param1'];
$param2 = $_POST['param2'];

//回傳 XML
$xml = "

 $param1
 $param2
";

//輸出XML header
header ("Content-Type:text/xml");
//輸出 XML
echo $xml;

2010年6月24日 星期四

[Flex]Flex 與 Javascript 相互傳值

要在 Flex 中與 JavaScript 相互傳值,可以使用 ExternalInterface 來實現,其提供了 addCallBack 和 call 方法。

Flex 呼叫 JavaScript 函式並傳值給 JavaScript

Flex 程式碼:
//ExternalInterface 函式庫
import flash.external.ExternalInterface;

public function javascriptAlert():void{

    //要執行的 JavaScript 函式名稱
    var javascriptFunction:String = "showAlert";
    //傳給 JavaScript 的值
    var message:String = "Hello JS!";
    
    if(ExternalInterface.available){
  //呼叫 JavaScript 函式,並傳值過去
  ExternalInterface.call(javascriptFunction, message);
    }
}

JavaScript 程式碼:



JavaScript 呼叫 Flex 函式並傳值給 Flex

JavaScript 程式碼:


Flex 程式碼:
import mx.controls.Alert;
//ExternalInterface 函式庫
import flash.external.ExternalInterface;

public function initApp():void{
    if(ExternalInterface.available){
     //設定 JavaScript 的回呼處理函式
        ExternalInterface.addCallback("flex_alertshow", alertshow);
    }       
}

public function alertshow(message:String):void{
    mx.controls.Alert.show(message);
}

2010年6月17日 星期四

[ActionScript]使用 POST 傳遞參數,與 PHP 做溝通

無法查看此摘要。請 按這裡查看文章。