<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 19.3 通過嵌入包裝重新創建cli # 通過嵌入包裝重新創建cli 現在php已經可以在你的應用中訪問了, 是時候讓它做?些事情了. 本章剩下的核心就是圍繞著在這個測試應用框架中重新創建cli sapi展開的. 很簡單, cli二進制程序最基礎的功能就是在命令行指定?個腳本的名字, 由php對其解 釋執行. 用下面的代碼替換你的embed1.c的內容就在你的應用中實現了cli. ``` #include <stdio.h> #include <sapi/embed/php_embed.h> int main(int argc, char *argv[]) { zend_file_handle script; /* 基本的參數檢查 */ if ( argc <= 1 ) { fprintf(stderr, "Usage: %s <filename.php> <arguments>\n", argv[0]); return -1; } /* 設置?一個文件處理結構 */ script.type script.filename script.opened_path script.free_filename if ( !(script.handle.fp = fopen(script.filename, "rb")) ) { fprintf(stderr, "Unable to open: %s\n", argv[1]); return -1; } /* 在將命令行參數注冊給php時(php中的$argv/$argc), 忽略第一個命令行參數, 因為它對php腳本無意義 */ argc --; argv ++; PHP_EMBED_START_BLOCK(argc, argv) php_execute_script(&script TSRMLS_CC); PHP_EMBED_END_BLOCK() return 0; } 譯注: 原著中的代碼在譯者的環境不能直接運行, 上面的代碼是經過修改的. ``` 當然, 你需要?個文件測試它, 創建?個小的php腳本, 命名為test.php, 在命令行使用你的embed程序執行它: ``` $ ./embed1 test.php ``` 如果你給命令行傳遞了其他參數, 你可以在你的php腳本中使用$\_SERVER\['argc'\]/ $\_SERVER\['argv'\]看到它們. 你可能注意到了, 在PHP\_EMBED\_START\_BLOCK()和PHP\_EMBED\_END\_BLOCK()之間 的代碼是縮進的. 這個細節是因為這兩個宏實際上構成了?個C語言的代碼塊作用域. 也就是說 PHP\_EMBED\_START\_BLOCK()包含?個打開的花括號"{", 在PHP\_EMBED\_END\_BLOCK()中 則有與之對應的關閉花括號"}". 這樣做非常重要的一個問題是它們不能被放入到獨立的啟動/終止函數中. 下一章你將看到這個問題的解決方案. ## links - [目錄](preface.md) - 19.2 [構建并編譯一個宿主應用](19.2.html) - 19.4 [老技術新用](19.4.html)
                  <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>

                              哎呀哎呀视频在线观看