最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

PHP-cli應用場景:

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

1.多線程應用

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

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

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

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

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

4.編寫PHP的shell腳本

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

PHP CLI的安裝

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

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

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

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

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

PHP-CLI技巧要點

運行PHP CLI

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

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

命令行選項

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

獲取命令行參數(shù)

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

備注:在web頁模式下必須在php.ini開啟register_argc_argv配置項,設置register_argc_argv = On(默認是Off),重啟服務,$_SERVER[‘argv’]才會有效果,這時候的$_SERVER[‘argv’][0] = $_SERVER[‘QUERY_STRING’]

標準輸入輸出

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

PHP配置文件

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

代碼僅在CLI下使用

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

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

超時時間

在php-cli中,默認超時時間為永久不超時,但是可以通過set_time_limit設置超時時間.

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

buffer緩沖

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

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

php cli模式下的常用命令

-a               以交互式shell模式運行
-c               指定php.ini文件所在的目錄
-n               指定不使用php.ini文件
-d foo[=bar]     定義一個INI實體,key為foo,value為'bar'
-e               為調試和分析生成擴展信息
-f               解釋和執(zhí)行文件.
-h               打印幫助
-i               顯示PHP的基本信息
-l               進行語法檢查 (lint)
-m               顯示編譯到內(nèi)核的模塊
-r               運行PHP代碼,不需要使用標簽 ..?>
-B               在處理輸入之前先執(zhí)行PHP代碼
-R               對輸入的沒一行作為PHP代碼運行
-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               運行內(nèi)建的web服務器.
-t               指定用于內(nèi)建web服務器的文檔根目錄
-s               輸出HTML語法高亮的源碼
-v               輸出PHP的版本號
-w               輸出去掉注釋和空格的源碼
-z               載入Zend擴展文件
args...          傳遞給要運行的腳本的參數(shù). 當?shù)谝粋€參數(shù)以-開始或者是腳本是從標準輸入讀取的時候,使用--參數(shù)
--ini            顯示PHP的配置文件名
--rf             顯示關于函數(shù)的信息
--rc             顯示關于類的信息
--re             顯示關于擴展的信息
--rz             顯示關于Zend擴展的信息
--ri             顯示擴展的配置信息.

1、php -m

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

2、php -v

顯示php的版本號

3、php --ini

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

4、php -h

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

5、php --info

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

6、php --rf

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

7、php --rc

顯示關于類的信息

8、php --re

顯示關于擴展的信息

9、php --ri

顯示擴展的配置信息

10、php --rz

顯示關于zend擴展的name信息

總結

 PHP 除了可以被Apache IIS服務器調用,還可以通過cli模式運行,因為php本質上還是C語言寫的程序。cli模式的業(yè)務場景:定時任務,有數(shù)據(jù)同步,數(shù)據(jù)處理,多線程,進程通信,共享內(nèi)存都要使用cli。

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

相關文章

  • php字符串使用詳細了解

    php字符串使用詳細了解

    PHP中的字符串是一種類C風格的字符串,只不過已經(jīng)得到了很好的封裝。在PHP中,可以將字符串包含在一對雙引號或一對單引號之中,我們來看一看php的字符串都有哪些特點
    2022-12-12
  • PHP中SimpleXML函數(shù)用法分析

    PHP中SimpleXML函數(shù)用法分析

    這篇文章主要介紹了PHP中SimpleXML函數(shù)用法,以實例形式詳細分析了采用SimpleXML函數(shù)操作XML文件的技巧,并附帶說明了相關的SimpleXML函數(shù),需要的朋友可以參考下
    2014-11-11
  • PHP獲取文件夾大小函數(shù)用法實例

    PHP獲取文件夾大小函數(shù)用法實例

    這篇文章主要介紹了PHP獲取文件夾大小函數(shù)用法,實例分析了php針對文件夾操作的相關技巧,需要的朋友可以參考下
    2015-07-07
  • PHP與MYSQL中UTF8 中文排序示例代碼

    PHP與MYSQL中UTF8 中文排序示例代碼

    一般使用utf8格式的文件,直接用asort排序不行。用gbk和gb2312可以,下面有個示例,大家可以看看
    2014-10-10
  • PHP頁面跳轉操作實例分析(header方法)

    PHP頁面跳轉操作實例分析(header方法)

    這篇文章主要介紹了PHP頁面跳轉操作,結合實例形式對比分析了HTML跳轉與php使用header方法跳轉的相關操作技巧與注意事項,并給出了一個跳轉的封裝函數(shù)供大家參考,需要的朋友可以參考下
    2016-09-09
  • php實現(xiàn)session自定義會話處理器的方法

    php實現(xiàn)session自定義會話處理器的方法

    這篇文章主要介紹了php實現(xiàn)session自定義會話處理器的方法,可通過設置session.save_handler為user來調用自定義的回調函數(shù),從而實現(xiàn)session自定義會話處理器的功能,非常具有實用價值,需要的朋友可以參考下
    2015-01-01
  • php中使用Akismet防止垃圾評論的代碼

    php中使用Akismet防止垃圾評論的代碼

    Akismet是一個優(yōu)秀的防Spam垃圾留言的優(yōu)秀插件,絕大多數(shù)wordpress blogger都在使用,有了akismet之后,基本上不用擔心垃圾留言的煩惱了。
    2011-06-06
  • php表單提交程序的安全使用方法

    php表單提交程序的安全使用方法

    是對一個接收自由提交表單數(shù)據(jù)的文件進行安全性分析,希望對各位有幫助。首先說明一下,代碼中的error()和succeed()是我自定義的函數(shù)
    2008-07-07
  • PHP中$_SERVER的詳細參數(shù)與說明介紹

    PHP中$_SERVER的詳細參數(shù)與說明介紹

    PHP編程中經(jīng)常需要用到一些服務器的一些資料,特把$_SERVER的詳細參數(shù)整理下,方便以后使用
    2013-10-10
  • Laravel中使用FormRequest進行表單驗證方法及問題匯總

    Laravel中使用FormRequest進行表單驗證方法及問題匯總

    Laravel 5.0 帶來了FormRequests, 這是一種特殊的類型, 用于在提交表單時進行數(shù)據(jù)的檢查和驗證. 每個FormRequest類至少包含一個rules()方法, 這個方法返回一組驗證規(guī)則. 除此之外還必須包含一個authorize()方法, 該方法返回一個布爾值, 代表是否允許用戶執(zhí)行本次請求.
    2016-06-06

最新評論

阳山县| 垫江县| 滕州市| 广宗县| 大名县| 梨树县| 麻江县| 中超| 茌平县| 江华| 阿克苏市| 烟台市| 康平县| 黄龙县| 霍州市| 绥棱县| 诸暨市| 丰镇市| 平乡县| 宜阳县| 阜阳市| 治多县| 仪陇县| 兰考县| 凌源市| 沈丘县| 闸北区| 汝城县| 黑龙江省| 伊通| 仪征市| 若羌县| 永丰县| 竹北市| 隆安县| 德江县| 辉南县| 福清市| 德州市| 鹤庆县| 曲周县|