php-cli簡介(不會Shell語言一樣用Shell)
更新時間:2013年06月03日 16:28:35 作者:
剛才說到,我們可以用php來開發(fā)Shell程序。有的同學(xué)可能會問啦:php不是用來做網(wǎng)頁的么?。是的,php可以用來做動態(tài)網(wǎng)頁,并且當(dāng)初php就是為做動態(tài)網(wǎng)頁而開發(fā)的語言,但是理論上php可以用來做任何的程序,甚至是桌面程序
1.基礎(chǔ)知識
1.1 什么是Shell編程?
在 Unix 中,shell 可不是簡單的命令解釋器(典型的有 Windows 中的 DOS ),而是一個全功能的編程環(huán)境。Shell 是操作系統(tǒng)的一部分,用來與用戶打交道,并且可以用來協(xié)調(diào)各個命令【1】。用Shell編程可以靈活地解決大量重復(fù)任務(wù),十分方便。但是,Shell的語法十分怪異(個人意見),不容易記,如果現(xiàn)在熟悉的語言可以用來寫shell那就好了——比如php——就可以快速開發(fā)Shell程序了(比如我的Preminder的后臺程序),于是便有了這篇文章,本文以Linux為例說明php-cli的用法,其它平臺的版本類似。
1.2 什么是php-cli?
剛才說到,我們可以用php來開發(fā)Shell程序。有的同學(xué)可能會問啦:“php不是用來做網(wǎng)頁的么?-_-”。是的,php可以用來做動態(tài)網(wǎng)頁,并且當(dāng)初php就是為做動態(tài)網(wǎng)頁而開發(fā)的語言,但是理論上php可以用來做任何的程序,甚至是桌面程序,而php-cli是php在命令行運(yùn)行的支持環(huán)境,也就是我們說的可以用來寫Shell的環(huán)境支持。
php-cli是php Command Line Interface的簡稱,如同它名字的意思,就是php在命令行運(yùn)行的接口,區(qū)別于在Web服務(wù)器上運(yùn)行的php環(huán)境(php-cgi, isapi等)【2】。
也就是說,php不單可以寫前臺網(wǎng)頁,它還可以用來寫后臺的程序。
2. 執(zhí)行php-cli腳本
2.1 php-cli的語法
當(dāng)然是跟php一模一樣啦,因為它就是php嘛!只不過一些默認(rèn)的參數(shù)與php-cgi不同,比如運(yùn)行時間:php-cli默認(rèn)運(yùn)行時間是無窮,而網(wǎng)頁php默認(rèn)設(shè)置是30s。
2.2 執(zhí)行php-cli腳本
2.2.1. 直接在終端執(zhí)行php
kangzj@localhost# php -r 'print_r(get_defined_constants());'2.2.2. 運(yùn)行php-cli腳本文件
kangzj@localhost# php my_script.php
kangzj@localhost# php -f my_script.php上而說的php文件就是一般的php文件沒有什么不同。還有一種方式,就是在文件中指令解釋器,就可以直接在終端以”./test.php執(zhí)行腳本了”,test.php就像下面這樣:
#!/usr/bin/php -q
<?php
echo "Hello world of PHP CLI!";
?>
補(bǔ)充:php的Shell程序并不一定以php為擴(kuò)展名,可以以任意擴(kuò)展名,甚至不要擴(kuò)展名,只是為了清楚,我才用的php擴(kuò)展名。
2.2.3. 用Cron執(zhí)行php-cli腳本
cron是一個linux下的定時執(zhí)行工具,可以在無需人工干預(yù)的情況下運(yùn)行作業(yè),周期性作業(yè),比如備份數(shù)據(jù),Preminder定期查詢PR等等,添加的方法:打開/etc/crontab,添加:
0 13 * * * /usr/bin/php -f /home/phpscripts/phpcli.php
4. 結(jié)語
如果你會php的話,那么你也會了一種Shell編程語言!
如果你不會php,你去學(xué)php,就相當(dāng)于一下子學(xué)會動態(tài)網(wǎng)頁和Shell兩種語言!并且你甚至可以用php來寫具有圖形界面的應(yīng)用程序,Dnspod的動態(tài)域名客戶端中就有一種是用php開發(fā)的。
php的易學(xué)是出名的,如果你還不會,那是在猶豫什么呢?
另外,再宣傳一下我的”Preminder”——PR更新Email提醒服務(wù)~~
5. 參考文獻(xiàn)
1.Linux Shell簡介 : http://www.dbjr.com.cn/article/37801.htm
2.PHP Command Line Interface : Mystic Unleashed :http://www.php-cli.com/
3.ch 4.2, php manual : http://www.php.net
PS:Shell命令還是要知道一些的,否則有些功能不太好實現(xiàn)。
1.1 什么是Shell編程?
在 Unix 中,shell 可不是簡單的命令解釋器(典型的有 Windows 中的 DOS ),而是一個全功能的編程環(huán)境。Shell 是操作系統(tǒng)的一部分,用來與用戶打交道,并且可以用來協(xié)調(diào)各個命令【1】。用Shell編程可以靈活地解決大量重復(fù)任務(wù),十分方便。但是,Shell的語法十分怪異(個人意見),不容易記,如果現(xiàn)在熟悉的語言可以用來寫shell那就好了——比如php——就可以快速開發(fā)Shell程序了(比如我的Preminder的后臺程序),于是便有了這篇文章,本文以Linux為例說明php-cli的用法,其它平臺的版本類似。
1.2 什么是php-cli?
剛才說到,我們可以用php來開發(fā)Shell程序。有的同學(xué)可能會問啦:“php不是用來做網(wǎng)頁的么?-_-”。是的,php可以用來做動態(tài)網(wǎng)頁,并且當(dāng)初php就是為做動態(tài)網(wǎng)頁而開發(fā)的語言,但是理論上php可以用來做任何的程序,甚至是桌面程序,而php-cli是php在命令行運(yùn)行的支持環(huán)境,也就是我們說的可以用來寫Shell的環(huán)境支持。
php-cli是php Command Line Interface的簡稱,如同它名字的意思,就是php在命令行運(yùn)行的接口,區(qū)別于在Web服務(wù)器上運(yùn)行的php環(huán)境(php-cgi, isapi等)【2】。
也就是說,php不單可以寫前臺網(wǎng)頁,它還可以用來寫后臺的程序。
2. 執(zhí)行php-cli腳本
2.1 php-cli的語法
當(dāng)然是跟php一模一樣啦,因為它就是php嘛!只不過一些默認(rèn)的參數(shù)與php-cgi不同,比如運(yùn)行時間:php-cli默認(rèn)運(yùn)行時間是無窮,而網(wǎng)頁php默認(rèn)設(shè)置是30s。
2.2 執(zhí)行php-cli腳本
2.2.1. 直接在終端執(zhí)行php
kangzj@localhost# php -r 'print_r(get_defined_constants());'2.2.2. 運(yùn)行php-cli腳本文件
kangzj@localhost# php my_script.php
kangzj@localhost# php -f my_script.php上而說的php文件就是一般的php文件沒有什么不同。還有一種方式,就是在文件中指令解釋器,就可以直接在終端以”./test.php執(zhí)行腳本了”,test.php就像下面這樣:
復(fù)制代碼 代碼如下:
#!/usr/bin/php -q
<?php
echo "Hello world of PHP CLI!";
?>
補(bǔ)充:php的Shell程序并不一定以php為擴(kuò)展名,可以以任意擴(kuò)展名,甚至不要擴(kuò)展名,只是為了清楚,我才用的php擴(kuò)展名。
2.2.3. 用Cron執(zhí)行php-cli腳本
cron是一個linux下的定時執(zhí)行工具,可以在無需人工干預(yù)的情況下運(yùn)行作業(yè),周期性作業(yè),比如備份數(shù)據(jù),Preminder定期查詢PR等等,添加的方法:打開/etc/crontab,添加:
0 13 * * * /usr/bin/php -f /home/phpscripts/phpcli.php
4. 結(jié)語
如果你會php的話,那么你也會了一種Shell編程語言!
如果你不會php,你去學(xué)php,就相當(dāng)于一下子學(xué)會動態(tài)網(wǎng)頁和Shell兩種語言!并且你甚至可以用php來寫具有圖形界面的應(yīng)用程序,Dnspod的動態(tài)域名客戶端中就有一種是用php開發(fā)的。
php的易學(xué)是出名的,如果你還不會,那是在猶豫什么呢?
另外,再宣傳一下我的”Preminder”——PR更新Email提醒服務(wù)~~
5. 參考文獻(xiàn)
1.Linux Shell簡介 : http://www.dbjr.com.cn/article/37801.htm
2.PHP Command Line Interface : Mystic Unleashed :http://www.php-cli.com/
3.ch 4.2, php manual : http://www.php.net
PS:Shell命令還是要知道一些的,否則有些功能不太好實現(xiàn)。
相關(guān)文章
php的數(shù)組與字符串的轉(zhuǎn)換函數(shù)整理匯總
以下是對php中的數(shù)組與字符串的轉(zhuǎn)換函數(shù)進(jìn)行了詳細(xì)的整理匯總,需要的朋友可以參考下2013-07-07php cache類代碼(php數(shù)據(jù)緩存類)
php的執(zhí)行效率很高,速度很快,但是連接數(shù)據(jù)庫、查詢數(shù)據(jù)庫等還是比較耗時的。2010-04-04PHP計劃任務(wù)之關(guān)閉瀏覽器后仍然繼續(xù)執(zhí)行的函數(shù)
通過使用ignore_user_abort函數(shù)的特性,實現(xiàn)PHP計劃任務(wù),需要的朋友可以參考下。2010-07-07PHP spl_autoload_register實現(xiàn)自動加載研究
spl_autoload_register()函數(shù)應(yīng)該是主流框架使用最多的也是非常核心的函數(shù)之一,可實現(xiàn)自動注冊函數(shù)和類,實現(xiàn)類似__autoload() 函數(shù)功能,簡化了類的調(diào)用與加載,提高了工作的效率2011-12-12簡單了解WordPress開發(fā)中update_option()函數(shù)的用法
這篇文章主要介紹了WordPress開發(fā)中update_option()函數(shù)的用法,update_option()函數(shù)經(jīng)常被用于更新數(shù)據(jù)庫中的數(shù)據(jù),需要的朋友可以參考下2016-01-01