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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 概述 如果要在新請求開始時重置全局變量,則可以注冊一個特殊的回調函數,該函數在每個請求的前面都會被調用 ### 回調類型 ``` // 如果要在調用函數之前初始化擴展中的其他變量 void onStartup(const std::function<void()> &callback); onRequest 方法,每次網頁瀏覽/請求之前都會調用此回調 // 每次網頁瀏覽/請求之前都會調用此回調 void onRequest(const std::function<void()> &callback); // 等待下一個請求 void onIdle(const std::function<void()> &callback); //PHP關閉之前立即被調用的回調 void onShutdown(const std::function<void()> &callback); ``` ## 示例 ### 設置擴展回調 <details> <summary>main.cpp</summary> ``` #include <phpcpp.h> #include <iostream> // 存儲次數的全局變量 int invokeTotalCount = 0; // 全局變量,用于跟蹤對象的次數 int invokeDuringRequestCount = 0; void updateCounters() { invokeTotalCount++; invokeDuringRequestCount++; } extern "C" { PHPCPP_EXPORT void *get_module() { static Php::Extension extension("my_extension", "1.0"); extension.onRequest([]() { Php::out<< "onRequest" <<std::endl; // 重新初始化計數器 invokeDuringRequestCount = 0; }); extension.onStartup([](){ Php::out<< "onStartup" <<std::endl; }); extension.onIdle([](){ Php::out<< "onIdle" <<std::endl; }); extension.onShutdown([](){ Php::out<< "onShutdown" <<std::endl; }); extension.add("updateCounters", updateCounters); return extension; } } ``` </details> <br /> <details> <summary>main.php</summary> ``` <?php echo "1".PHP_EOL; updateCounters(); echo "2".PHP_EOL; updateCounters(); echo "3".PHP_EOL; //onStartup // onRequest // 1 // 2 // 3 // onIdle ``` </details> <br /> ### 設置 apache 如果在Apache 上運行,則在分支各種工作進程之前,將加載并初始化擴展,onStartup() 回調函數由父進程調用 最好不要在啟動功能中執行將進程分叉到不同子進程(例如打開文件描述符) 不僅在Apache進程停止時調用onShutdown,而且在某個工作進程退出(因為不再需要該工作進程或因為它被新的新工作程序替換)而退出時,也將調用它。 ### 多線程 則應注意,全局(和靜態!)變量也可以同時被多個線程訪問,使用類似技術std::mutex或std::atomic 防止進行預防 如果擴展是針對多線程環境編譯的,則PHP-CPP頭文件將定義宏ZTS 重要準則 1. 不要使用全局變量 2. 只調用其他本機函數,而不回調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>

                              哎呀哎呀视频在线观看