php cli模式

來源:互聯網
上載者:User

標籤:優勢   gtk   不同的   cat   nbsp   man   第一個   tput   and   


PHP 的命令列模式

      從版本 4.3.0 開始,PHP 提供了一種新類型的 CLI SAPI(Server Application Programming Interface,服務端應用編程連接埠)支援,名為 CLI,意為 Command Line Interface,即命令列介面。顧名思義,該 CLI SAPI 模組主要用作 PHP 的開發外殼應用。CLI SAPI 和其它 CLI SAPI 模組相比有很多的不同之處,我們將在本章中詳細闡述。值得一提的是,CLI 和 CGI 是不同的 SAPI,儘管它們之間有很多共同的行為。 

PHP-CLI模式的優勢及使用場合

  1. 完全支援多線程

  2. 實現定時任務

  3. 開發案頭應用就是使用PHP-CLI和GTK包

  4. linux下用php編寫shell指令碼

PHP 的命令列模式擴充

  其實PHP的運行環境遠遠不止apache和cli,如aolserver, apache, apache2filter, apache2handler, caudium, cgi (until PHP 5.3), cgi-fcgi, cli, continuity, embed, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux, and webjames.可以用php_sapi_name()這個函數去檢測,這裡只檢測Apache伺服器和Windows CMD擴充,下面編寫一個cli.php檔案進行測試:

<?phpecho "PHP current cli mode :".php_sapi_name();

Windows cmd命令列模式運行結果:

在Apache伺服器模式下運行結果:

PHP 的命令列自變數

  和所有的外殼應用程式一樣,PHP 的二進位檔案(php.exe 檔)及其啟動並執行 PHP 指令碼能夠接受一系列的參數。PHP 沒有限制傳送給指令碼程式的參數的個數(外殼程式對命令列的字元數有限制,但通常都不會超過該限制)。傳遞給指令碼的參數可在全域變數 $argv 中擷取。該數組中下標為零的成員為指令碼的名稱(當 PHP 代碼來自標準輸入獲直接用 -r 參數以命令列方式運行時,該名稱為“-”)。另外,全域變數 $argc 存有 $argv 數組中成員變數的個數(而非傳送給指令碼程式的參數的個數)。

  PHP CLI帶有兩個特殊的變數,專門用來達到這個目的:一個是$argv變數,它通過命令列把傳遞給PHP指令碼的參數儲存為單獨的數組元素;另一個是$argc變數,它用來儲存$argv數組裡元素的個數。

建立一個測試檔案cli.php:

<?phpecho "argv:".print_r($argv)."\r\n";echo "argc:".$argc;

測試結果如下所示:

 

瞭解更多,請參考官方手冊:http://php.net/manual/zh/features.commandline.php

PHP的exec()函數無傳回值排查方法

exec執行某命令在命令列下沒有問題,但是在PHP中就出錯。這個問題99.99%與許可權有關,但是exec執行的命令不會返回錯誤。一個技巧就是使用管道命令,假設你的exec調用如下:

exec(‘convert a.jpg b.jpg‘, $output, $return_val);  

可以更改如下:

exec(‘convert a.jpg b.jpg 2>&1‘, $output, $return_val);    print_r($output);  

使用 2>&1, 命令就會輸出shell執行時的錯誤到$output變數, 輸出該變數即可分析。

備忘: exec有3個參數,第一個是要執行的命令,第二個是參數是一個數組,數組的值是由第一個命令執行後產生的,第三個參數執行的狀態,0表示成功,其他都表示失敗。

在php裡面一共有三個函數可以用來執行外部命令system,exec,passthru。

php cli模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.