明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

PHP做Shell語言

[摘要]聯想軟件超星空工作室 馬洪志PHP(Personal Hypertext Preprocessor) 近一兩年來似乎已經成為Linux/Unix上最廣為使用的網頁處理語言,方便、功能強大與源代碼開放(OpenSource)的特性使得它正逐漸占領傳統(tǒng)的CGI,甚至是 MicroSoft ASP(Ac...
聯想軟件超星空工作室 馬洪志

PHP(Personal Hypertext Preprocessor) 近一兩年來似乎已經成為Linux/Unix上最廣為使用的網頁處理語言,方便、功能強大與源代碼開放(OpenSource)的特性使得它正逐漸占領傳統(tǒng)的CGI,甚至是 MicroSoft ASP(Active Server Page)的市場,很多的web站點用PHP做動態(tài)網頁處理。

究其原因,可以總結如下:

PHP是OpenSource的軟件,基于GPL協(xié)議,源代碼開放,免費使用,自由發(fā)放,這樣吸引了大量的人使用,同時也得到了商業(yè)公司的支持,特別是在PHP4中,zend為PHP提供了引擎和優(yōu)化部分,你可以訪問http://www.php.net或http://www.zend.com,可以得到更多的信息。

PHP本身的語法非常的簡單,和C、Perl語言有很大的相似。當我第一次接觸PHP時,感覺它簡直是Perl的克隆。PHP本身非常簡單易懂,同時提供面向對象的處理能力,讓新手足以在最短時間內學會。

PHP 提供了非常豐富的功能,包含了數學處理、字串處理、網絡相關功能、各種數據庫的支持、圖像處理功能。有很多人為PHP發(fā)展提供各式各樣的新功能,它的擴性極佳。目前,PHP對Flash提供了較好的支持。

PHP很容易與Apache相結合,可以作為Apache的模組來使用,同時,在Apache中設定安裝相當簡單,也因為Apache目前已經占據了Web Server 全球 60% 的市場,PHP 自然而然成為 Apache 最佳搭配。同時為了提高web服務器的速度,可以把PHP直接編譯進Apache,提高web服務的訪問、處理速度。

PHP的另外的一個功能是:它實際上是可以作為shell script來應用的。PHP作為shell script比其他的shell語言有很大的優(yōu)勢。尤其PHP的數據庫的服務功能非常的強大,用戶可以方便的訪問數據庫系統(tǒng)。

編譯PHP讓它用來做解釋器,本文的操作環(huán)境是HappyLinux家用版V1.0,以root身份執(zhí)行下面的步驟:


獲得PHP的源代碼  

PHP的源代碼在http://www.php.net 的網站上可以得到,同時國內的很多的網站上提供改網站的鏡像。目前,最新的版本是PHP 4.0.2。


解開PHP源碼包  

tar zxvf php-4.0.2.tar.gz


編譯PHP  

cd php-4.0.2

configure --with-ftp --with-pgsql

make

注意configure的參數看PHP的幫助文件,以便你能更好的配置PHP。


當編譯完成后,在php-4.0.2目錄下會生成一個php的文件,將這個文件拷貝到/usr/sbin/  

cp ./php /usr/sbin


測試編譯的結果  

輸入下面的結果到文件test.php中:

#!/usr/sbin/php

<?php

echo “Hello World!\n”

?>

保存結果到test.php中并更改文件的屬性:

chmod 777 ./test.php

執(zhí)行文件test.php

./test.php

這時你能夠看見結果:

X-Powered-By: PHP/4.0.2

Content-type: text/html

Hello World!

這個結果你可能有些失望,它并不是我們要的全部的結果。因為,PHP主要是做為網頁的應用,上面的頭兩行是輸出的HPPT的頭,怎樣讓PHP去掉這兩行呢?你僅僅需要在加入參數-q就可以去掉HPPT頭:

#!/usr/sbin/php -q

<?php

echo “Hello World!\n”

?>

再看一下輸出的結果:

Hello World!


OK!搞定。下面用PHP做腳本列舉一些應用


用PHP連接數據庫  

PHP提供大量的數據庫的函數,幾乎所有的數據庫PHP提供一套數據庫的函數,所以用PHP寫腳本,訪問數據庫是一個很好的主意。下面的例子是用PHP訪問postgresql數據庫的一個例子:

#!/usr/sbin/php -q

<?php

string=$con=pg_Connect("dbname=test port=5432 host=127.0.0.1 user=postgres\ password=postgres");

echo $con."\n";

pg_exec($con,"insert into test1 values ('ok',1,1)");

pg_close($con);

?>

執(zhí)行這個腳本,PHP訪問數據庫test,同時,會向test1表中插入一個記錄。有關PHP訪問數據庫的內容請看相關的數據庫函數和數據庫的文檔手冊。


用PHP做FTP自動上載和下載腳本  

在PHP3就提供PHP的FTP的函數,用這些函數能夠實現文件的自動上載和下載的功能。想要利用PHP提供的FTP函數,必須要在編譯PHP時的configure指定參--with-ftp。下面是FTP的例子:

#!/usr/sbin/php -q

<?php

// set up basic connection

$conn_id = ftp_connect("$your_ftp_server");


// login with username and password

$login_result = ftp_login($conn_id, "$ftp_your_name", "$ftp_your_password");


// check connection

if ((!$conn_id) (!$login_result)) {

echo "Ftp connection has failed!";

echo "Attempted to connect to $your_ftp_server ";

die;

} else {

echo "Connected to $ftp_server, for your";

}


// upload the file

$upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY);


// check upload status

if (!$upload) {

echo "Ftp upload has failed!";

} else {

echo "Uploaded $source_file to $your_ftp_server as $destination_file";

}


// close the FTP stream

ftp_quit($conn_id);

?>

顯然利用PHP可以方便的進行網絡的文件傳輸,沒有必要寫socket程序。


用PHP處理命令行參數  

PHP和Perl的相似之處還在于它們們處理的參數的方法是一致的,它們提供變量數組和變量計數器:$ argv [],$ argc。下面的例子是一個打印命令行字串的例子和命令行求和。

test.php


#!/usr/sbin/php –q  

<?php

echo $argv[1]; //注意$ argv []的第一個變量從1開始

?>

在命令行下執(zhí)行:./test.php LegendSoftware

將打印LegendSoftware


test1.php


#!/usr/sbin/php –q

<?php

$sum=0;

for ($i=1;$i<=$argc;$i++)

$sum=$sum+$argv[$i];

echo $sum;

?>

執(zhí)行 test1.php 1 2 3 4 5 回車,則會打印出 15。


在Console下進行交互  

許多的C程序員知道在Console下進行交互用scanf函數,PHP是為web而設計的語言,用戶輸入交互通過form中的變量。那么在Console下怎么進行交互呢?答案很簡單,用fopen函數打開系統(tǒng)的標準輸入設備進行讀取。下面的程序實現了這個從標準輸入設備上讀取字串的功能:

#!/usr/sbin/php -q

<?

$fp=fopen("/dev/stdin","r");

echo “Please input a string:”

$inputstr=fgets($fp,100);

fclose($fp);

echo "This string is ";

echo $inputstr.”\n”;

?>  


其中的 fgets($fp,100) 是指從$fp句柄(也就是 "/dev/stdin")中讀取出最多100個字節(jié),執(zhí)行這個程序會等待我們的輸入,當我們輸入完按下 enter 之后,程序會將我們的輸入打印出來。

小結

通過上面的介紹,和本人的實踐經驗,PHP的功能非常的強大,不但對web的處理能力非常的強大,同時對腳本的處理能力也是非常的方便。


相關文章