<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [https://zhuanlan.zhihu.com/p/98155288](https://zhuanlan.zhihu.com/p/98155288) **php_cli模式簡介** php-cli是php Command Line Interface的簡稱,如同它名字的意思,就是php在命令行運行的接口,區別于在Web服務器上運行的php環境(php-cgi, isapi等) 也就是說,php不單可以寫前臺網頁,它還可以用來寫后臺的程序。 PHP的CLI shell腳本適用于所有的PHP優勢,使創建要么支持腳本或系統甚至與GUI應用程序的服務端!——注:windows和linux下都支持php_cli模式 判斷是否是CLI模式 ``` define('IS_CLI', PHP_SAPI == 'cli' ? true : false); ``` **PHP-cli應用場景:** >[info]cli模式的業務場景: 定時任務,有數據同步,數據處理,多線程,進程通信,共享內存都要使用 cli 或者你想單獨執行某個PHP的時候 1.多線程應用 這方面的好處,引用鳥哥的話: 優點: 1\. 使用多進程, 子進程結束以后, 內核會負責回收資源 2\. 使用多進程,子進程異常退出不會導致整個進程Thread退出. 父進程還有機會重建流程. 3\. 一個常駐主進程, 只負責任務分發, 邏輯更清楚. php的多線程—沒錯就是php多線程應用,雖然大家都普遍認為php沒有多線程(curl屬于模擬多線程而不是真實的),但是在php\_cli模式下的php徹底的是屬于多線程。這個時候php屬于linux的一個守護進程。 在本人之前寫過的《PHP多線程批量采集下載美女圖片(續)》的時候在采集程序里雖然使用curl來模擬多線程,但是在瀏覽器執行的時候也是會遇到執行超時或內存abort而導致程序中斷,(要嘗試幾次才可以徹底成功),但是如果在php-cli模式下執行,你就會發現這個程序執行的很快,php多線程執行的優勢被徹底表現出來了. 備注:這種多線程方式不是很成熟,不適合大規模的生成應用,偶爾使用還是可以的 2.定時執行php程序 之前本人總結關于《PHP定時執行計劃任務》的三種方式,利用有一張就是利用linux的cron方式,那么這個方式是如何定時執行php程序?請看下文 3.開發桌面程序 你可以做您的Windows或Linux中使用PHP的圖形用戶界面(GUI)應用!所有你需要的是PHP的命令行接口和一包GTK。這將允許建立真正的便攜式圖形用戶界面應用程序(呵呵,之前只是知道php可以做桌面程序,現在才知道是使用php\_cli模式),并且不需要學習別的。 4.編寫PHP的shell腳本 如果你不會bash shell或者Perl等的使用,但是你又需要一些腳本去執行的時候,怎么辦?這個時候你完全可以使用你熟悉的php編寫shell腳本,這個時候你是不是突然感覺PHP是不是太強大了!—–真正做到一種語言,到處開發! **PHP_CLI使用方法** win下面的執行方法: 假設php.exe 在D:xamppphp在dos命令在可以這個執行: ``` D:\xamppphpphp.exe D:\xampphtdocstest.php ``` 就可以執行test.php這個文件了 。這里推薦win平臺下xampp集成環境,真正比wamp強大N倍,這個集成包可以直接進入dos模式。 linux下php_cli使用 首先找到你安裝php的路徑,以我為例: ![](https://img.kancloud.cn/c8/b5/c8b5eab8fa46d2e0b204c4a55eff79ce_444x72.png) php安裝在路徑/usr/local/php/bin/php下鍵入以下內容 ``` /usr/local/php/bin/php /usr/local/apache/htdocs/a.php ``` 就可以執行a.php文件 **PHP_CLI編程需知** 如何檢測環境支持php_cli模式? ``` <?php //方法1 if (PHP_SAPI === 'cli') { ?? // ... } //方法2 if (php_sapi_name() === 'cli') { ?? // ... } ``` **PHP_ClI如何接收參數?** 默認情況下/usr/local/php/bin/php接收參數是$argv,這個變量是固定的!在php文件中 ``` var_dump($argv); ``` 得到下面結果: ![](https://img.kancloud.cn/67/9b/679bfb2e09583ecd8abe256028b3c140_636x111.png) 可以寫個簡單的處理函數把這個方式轉化為大家常用的GET/post的參數模式 ``` <?php function parseArgs($argv){ array_shift($argv); $out = array(); foreach ($argv as $arg){ if (substr($arg,0,2) == '--'){ $eqPos = strpos($arg,'='); if ($eqPos === false){ $key = substr($arg,2); $out[$key] = isset($out[$key]) ? $out[$key] : true; } else { $key = substr($arg,2,$eqPos-2); $out[$key] = substr($arg,$eqPos+1); } } else if (substr($arg,0,1) == '-'){ if (substr($arg,2,1) == '='){ $key = substr($arg,1,1); $out[$key] = substr($arg,3); } else { $chars = str_split(substr($arg,1)); foreach ($chars as $char){ $key = $char; $out[$key] = isset($out[$key]) ? $out[$key] : true; } } } else { $out[] = $arg; } } return $out; } var_dump($argv); var_dump(parseArgs($argv));exit; ``` ![](https://img.kancloud.cn/0f/0c/0f0cb638b1f8971f795826b6ed4a9f41_536x93.png) **關于定時執行** cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業,周期性作業,比如備份數據 打開/etc/crontab,添加: ``` /usr/bin/php -f /data/htdocs/test.php ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看