欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP-CLI命令行模式開(kāi)發(fā)從新手到高手

 更新時(shí)間:2024年04月20日 11:15:35   投稿:yin  
php-cli就是php在命令行運(yùn)行的接口,區(qū)別于在Web服務(wù)器上運(yùn)行的php環(huán)境(php-cgi, isapi等),也就是說(shuō),php不單可以寫(xiě)前臺(tái)網(wǎng)頁(yè),它還可以用來(lái)寫(xiě)后臺(tái)的程序,cli模式的業(yè)務(wù)場(chǎng)景:定時(shí)任務(wù),有數(shù)據(jù)同步,數(shù)據(jù)處理,多線程,進(jìn)程通信,共享內(nèi)存都要使用cli

php-cli是php Command Line Interface的簡(jiǎn)稱,如同它名字的意思,就是php在命令行運(yùn)行的接口,區(qū)別于在Web服務(wù)器上運(yùn)行的php環(huán)境(php-cgi, isapi等) 也就是說(shuō),php不單可以寫(xiě)前臺(tái)網(wǎng)頁(yè),它還可以用來(lái)寫(xiě)后臺(tái)的程序。 PHP的CLI shell腳本適用于所有的PHP優(yōu)勢(shì),使創(chuàng)建要么支持腳本或系統(tǒng)甚至與GUI應(yīng)用程序的服務(wù)端!——注:windows和linux下都支持php_cli模式

PHP-cli應(yīng)用場(chǎng)景:

cli模式的業(yè)務(wù)場(chǎng)景:定時(shí)任務(wù),有數(shù)據(jù)同步,數(shù)據(jù)處理,多線程,進(jìn)程通信,共享內(nèi)存都要使用cli

1.多線程應(yīng)用

1. 使用多進(jìn)程, 子進(jìn)程結(jié)束以后, 內(nèi)核會(huì)負(fù)責(zé)回收資源
2. 使用多進(jìn)程,子進(jìn)程異常退出不會(huì)導(dǎo)致整個(gè)進(jìn)程Thread退出. 父進(jìn)程還有機(jī)會(huì)重建流程
3. 一個(gè)常駐主進(jìn)程, 只負(fù)責(zé)任務(wù)分發(fā), 邏輯更清楚
4.雖然大家都普遍認(rèn)為php沒(méi)有多線程(curl屬于模擬多線程而不是真實(shí)的),但是在php_cli模式下的php徹底的是屬于多線程。這個(gè)時(shí)候php屬于linux的一個(gè)守護(hù)進(jìn)程。

2.定時(shí)執(zhí)行php程序

利用linux的cron方式,cron是一個(gè)linux下的定時(shí)執(zhí)行工具,可以在無(wú)需人工干預(yù)的情況下運(yùn)行作業(yè),周期性作業(yè)

3.開(kāi)發(fā)桌面程序

你可以做您的Windows或Linux中使用PHP的圖形用戶界面(GUI)應(yīng)用!所有你需要的是PHP的命令行接口和一包GTK。這將允許建立真正的便攜式圖形用戶界面應(yīng)用程序(呵呵,之前只是知道php可以做桌面程序,現(xiàn)在才知道是使用php_cli模式),并且不需要學(xué)習(xí)別的。

4.編寫(xiě)PHP的shell腳本

如果你不會(huì)bash shell或者Perl等的使用,但是你又需要一些腳本去執(zhí)行的時(shí)候,怎么辦?這個(gè)時(shí)候你完全可以使用你熟悉的php編寫(xiě)shell腳本,這個(gè)時(shí)候你是不是突然感覺(jué)PHP是不是太強(qiáng)大了!

PHP CLI的安裝

PHP CLI可以從PHP官網(wǎng)下載并安裝。在安裝完成后,需要配置環(huán)境變量,以在任何地方運(yùn)行php命令行。

在Windows系統(tǒng)下執(zhí)行下列步驟:

  • 下載并安裝PHP
  • 將PHP的安裝目錄添加到環(huán)境變量PATH中
  • 打開(kāi)終端(cmd.exe),輸入php -v,確認(rèn)已經(jīng)安裝并正確配置了環(huán)境變量

在Linux或macOS系統(tǒng)下,可以通過(guò)命令行指令安裝php:

  • Ubuntu/Debian系統(tǒng): sudo apt-get install php-cli
  • CentOS/RHEL系統(tǒng):sudo yum install php-cli
  • macOS系統(tǒng)(通過(guò)brew包管理器):brew install php

PHP-CLI技巧要點(diǎn)

運(yùn)行PHP CLI

第一種方法是將PHP解釋器的可執(zhí)行文件路徑添加到環(huán)境變量(PATH)中或者直接使用完整路徑。然后,可以在終端中鍵入php命令,后面跟著要執(zhí)行的PHP腳本的路徑,例如:使用 # php /path/to/yourFile.php 調(diào)用PHP CLI解釋器,并給腳本傳遞參數(shù)。這種方法要指定php解釋器的路徑。

第二種方法是首先運(yùn)行chmod +x <要運(yùn)行的腳本文件名>(UNIX/Linux環(huán)境),將該P(yáng)HP文件置為可執(zhí)行權(quán)限,然后在CLI腳本頭部第一行加入聲明(類似于#! /usr/bin/php 或 PHP CLI 解釋器位置),接著在命令行直接執(zhí)行。

命令行選項(xiàng)

PHP CLI支持許多命令行選項(xiàng),以控制腳本的行為。例如,可以使用-r選項(xiàng)來(lái)執(zhí)行單行PHP代碼,或者使用-f選項(xiàng)來(lái)指定要執(zhí)行的PHP腳本文件。

獲取命令行參數(shù)

PHP CLI帶有兩個(gè)特殊的變量,專門(mén)用來(lái)達(dá)到這個(gè)目的:
 * 一個(gè)是 $_SERVER['argv'] 變量,它通過(guò)命令行把傳遞給PHP腳本的參數(shù)保存為單獨(dú)的數(shù)組元素;
 * 另一是 $_SERVER['argc'] 變量,它用來(lái)保存$_SERVER['argv']數(shù)組里元素的個(gè)數(shù)。CLI可以從 $_SERVER['argv'] 和 $_SERVER['argc'] 取得參數(shù)的值和參數(shù)個(gè)數(shù)。

備注:在web頁(yè)模式下必須在php.ini開(kāi)啟register_argc_argv配置項(xiàng),設(shè)置register_argc_argv = On(默認(rèn)是Off),重啟服務(wù),$_SERVER[‘argv’]才會(huì)有效果,這時(shí)候的$_SERVER[‘argv’][0] = $_SERVER[‘QUERY_STRING’]

標(biāo)準(zhǔn)輸入輸出

在CLI環(huán)境下,可以使用echo語(yǔ)句將輸出打印到終端,還可以使用fgets(STDIN)從終端讀取輸入。

PHP配置文件

CLI和Web服務(wù)器環(huán)境下的PHP可能使用不同的配置文件。在CLI環(huán)境下,默認(rèn)情況下使用的是php.ini文件,可以通過(guò)php --ini命令來(lái)查找并編輯該文件。

代碼僅在CLI下使用

在PHP中,通過(guò)檢查 PHP_SAPI 常量來(lái)確定代碼是否在CLI(命令行界面)下執(zhí)行。

if (PHP_SAPI === 'cli') {
    // 在這里編寫(xiě)僅在CLI環(huán)境下執(zhí)行的代碼
    // 例如:
    echo "這是在命令行界面下執(zhí)行的代碼";
}

超時(shí)時(shí)間

在php-cli中,默認(rèn)超時(shí)時(shí)間為永久不超時(shí),但是可以通過(guò)set_time_limit設(shè)置超時(shí)時(shí)間.

<?php
set_time_limit(1);
while (1){
}

buffer緩沖

在常規(guī)web模式中,echo,var_dump,phpinfo等輸出語(yǔ)句/函數(shù),默認(rèn)情況是先進(jìn)入php緩沖區(qū),等緩沖區(qū)到達(dá)一定數(shù)量,才開(kāi)始傳輸給web服務(wù)器的,但是在php-cli模式中,默認(rèn)關(guān)閉buffer,直接輸出,例如以下代碼:

<?php
ob_start();//開(kāi)啟buffer緩沖區(qū)  php-cli下默認(rèn)關(guān)閉buffer,由于web訪問(wèn)測(cè)試較麻煩,該段代碼只為了查看以及測(cè)試緩沖區(qū)的作用,在web模式下,默認(rèn)開(kāi)啟,無(wú)需手動(dòng)開(kāi)啟,可自行配置
for($i=0;$i<1000;$i++){
    echo $i;
    sleep(1);
    if($i%10==0){
        //當(dāng)i為10的倍數(shù)時(shí),將直接結(jié)束并輸出緩沖區(qū)的數(shù)據(jù),然后再次開(kāi)啟緩沖區(qū)
        ob_end_flush();
        ob_start();
    }
}

php cli模式下的常用命令

-a               以交互式shell模式運(yùn)行
-c               指定php.ini文件所在的目錄
-n               指定不使用php.ini文件
-d foo[=bar]     定義一個(gè)INI實(shí)體,key為foo,value為'bar'
-e               為調(diào)試和分析生成擴(kuò)展信息
-f               解釋和執(zhí)行文件.
-h               打印幫助
-i               顯示PHP的基本信息
-l               進(jìn)行語(yǔ)法檢查 (lint)
-m               顯示編譯到內(nèi)核的模塊
-r               運(yùn)行PHP代碼,不需要使用標(biāo)簽 ..?>
-B               在處理輸入之前先執(zhí)行PHP代碼
-R               對(duì)輸入的沒(méi)一行作為PHP代碼運(yùn)行
-F               Parse and execute  for every input line
-E               Run PHP  after processing all input lines
-H               Hide any passed arguments from external tools.
-S               運(yùn)行內(nèi)建的web服務(wù)器.
-t               指定用于內(nèi)建web服務(wù)器的文檔根目錄
-s               輸出HTML語(yǔ)法高亮的源碼
-v               輸出PHP的版本號(hào)
-w               輸出去掉注釋和空格的源碼
-z               載入Zend擴(kuò)展文件
args...          傳遞給要運(yùn)行的腳本的參數(shù). 當(dāng)?shù)谝粋€(gè)參數(shù)以-開(kāi)始或者是腳本是從標(biāo)準(zhǔn)輸入讀取的時(shí)候,使用--參數(shù)
--ini            顯示PHP的配置文件名
--rf             顯示關(guān)于函數(shù)的信息
--rc             顯示關(guān)于類的信息
--re             顯示關(guān)于擴(kuò)展的信息
--rz             顯示關(guān)于Zend擴(kuò)展的信息
--ri             顯示擴(kuò)展的配置信息.

1、php -m

顯示編譯到內(nèi)核下的模塊

2、php -v

顯示php的版本號(hào)

3、php --ini

顯示配置文件名及配置文件路徑,注意,這里顯示的是php cli模式下的php.ini配置文件的所在路徑。

4、php -h

顯示php在cli模式下有哪些命令行命令

5、php --info

查看類/函數(shù)/擴(kuò)展信息,和web服務(wù)器上php 使用phpinfo()一樣

6、php --rf

顯示關(guān)于函數(shù)的信息

7、php --rc

顯示關(guān)于類的信息

8、php --re

顯示關(guān)于擴(kuò)展的信息

9、php --ri

顯示擴(kuò)展的配置信息

10、php --rz

顯示關(guān)于zend擴(kuò)展的name信息

總結(jié)

 PHP 除了可以被Apache IIS服務(wù)器調(diào)用,還可以通過(guò)cli模式運(yùn)行,因?yàn)閜hp本質(zhì)上還是C語(yǔ)言寫(xiě)的程序。cli模式的業(yè)務(wù)場(chǎng)景:定時(shí)任務(wù),有數(shù)據(jù)同步,數(shù)據(jù)處理,多線程,進(jìn)程通信,共享內(nèi)存都要使用cli。

到此這篇關(guān)于PHP-CLI命令行模式開(kāi)發(fā)從新手到高手的文章就介紹到這了,更多相關(guān)PHP-CLI命令行模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • php的XML文件解釋類應(yīng)用實(shí)例

    php的XML文件解釋類應(yīng)用實(shí)例

    這篇文章主要介紹了php的XML文件解釋類及其應(yīng)用實(shí)例,包括針對(duì)XML文件的讀取、解釋、檢查及輸出等功能,非常實(shí)用,需要的朋友可以參考下
    2014-09-09
  • PHP實(shí)現(xiàn)LRU算法的原理詳解

    PHP實(shí)現(xiàn)LRU算法的原理詳解

    這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)LRU算法的原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • PHP實(shí)現(xiàn)動(dòng)態(tài)執(zhí)行代碼的方法

    PHP實(shí)現(xiàn)動(dòng)態(tài)執(zhí)行代碼的方法

    這篇文章主要介紹了PHP實(shí)現(xiàn)動(dòng)態(tài)執(zhí)行代碼的方法,涉及PHP中create_function函數(shù)的使用技巧,需要的朋友可以參考下
    2016-03-03
  • 簡(jiǎn)單解決微信文章圖片防盜鏈問(wèn)題

    簡(jiǎn)單解決微信文章圖片防盜鏈問(wèn)題

    本文給大家介紹了2種如何盜鏈微信文章圖片的方法,思路非常巧妙,有需要的小伙伴可以來(lái)參考下
    2016-12-12
  • 詳談PHP編碼轉(zhuǎn)換問(wèn)題

    詳談PHP編碼轉(zhuǎn)換問(wèn)題

    本文給大家分享的是個(gè)人對(duì)于PHP編碼轉(zhuǎn)換問(wèn)題的理解以及處理方法,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-07-07
  • PHP常用的三種設(shè)計(jì)模式匯總

    PHP常用的三種設(shè)計(jì)模式匯總

    本文給大家簡(jiǎn)單介紹了PHP中最常用的三種設(shè)計(jì)模式:?jiǎn)卫O(shè)計(jì)模式、工廠設(shè)計(jì)模式和觀察者設(shè)計(jì)模式。都是個(gè)人的一些經(jīng)驗(yàn)總結(jié),希望小伙伴們能夠喜歡
    2016-08-08
  • PHP標(biāo)準(zhǔn)庫(kù)(PHP SPL)詳解

    PHP標(biāo)準(zhǔn)庫(kù)(PHP SPL)詳解

    今天小編就為大家分享一篇關(guān)于PHP標(biāo)準(zhǔn)庫(kù)(PHP SPL)詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • php自動(dòng)給網(wǎng)址加上鏈接的方法

    php自動(dòng)給網(wǎng)址加上鏈接的方法

    這篇文章主要介紹了php自動(dòng)給網(wǎng)址加上鏈接的方法,可實(shí)現(xiàn)對(duì)本文中的網(wǎng)址加上鏈接的功能,涉及正則匹配的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • PHP判斷上傳文件類型的解決辦法

    PHP判斷上傳文件類型的解決辦法

    php通過(guò)判斷上傳文件的頭字符來(lái)判斷文件的類型,這可以稱得上是最安全,最真實(shí)確定上傳文件類型的方法了,具體實(shí)現(xiàn)方法如下
    2015-10-10
  • PHP實(shí)現(xiàn)郵件群發(fā)的源碼

    PHP實(shí)現(xiàn)郵件群發(fā)的源碼

    本篇文章是對(duì)用PHP實(shí)現(xiàn)郵件群發(fā)的代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評(píng)論