<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國際加速解決方案。 廣告
                # **簡介** webserver是一款筆者為了本服務器而開發的一款基于workerman的web服務器,其特點就是小、無過多繁瑣代碼,能滿足基本的web需求,這里并沒有單獨的webservser提供如果想單獨只使用webserver將GatewayWorker剔除即可。webserver的項目根目錄為Applications/webApp。 本webserver基于workerman的[webserver](http://doc.workerman.net/web-server.html)開發所以應遵照其規范進行開發。 ## WorkerMan的Webserver與普通Web開發異同 ### 1、普通Web程序架構運行機制 一般的Web程序一般都是基于nginx+php-fpm或者apache+php的架構開發的,這些架構的運行機制一般是是每個請求都會經過請求初始化、創建執行環境、詞法解析、語法解析、編譯生成opcode以及請求關閉釋放各種資源(如果有opcode緩存會跳過詞法解析、語法解析、編譯生成opcode步驟) ### 2、WorkerMan架構Web程序運行機制 WorkerMan是常駐內存的運行機制,只要PHP文件被載入編譯過一次,便會常駐內存,不會再去從磁盤讀取或者再去編譯,并省去了重復的請求初始化、創建執行環境、詞法解析、語法解析、編譯生成opcode以及請求關閉釋放各種資源等諸多耗時的步驟。剩下的只是簡單的計算過程,所以性能很高。正因為常駐內存,所以類、函數、常量等定義代碼只要運行一次,便可以永久使用,不會被銷毀,所以要避免反復加載類、函數、常量等定義文件。比較簡單的辦法是使用require_once加載文件,避免重復加載重復定義。 ### 3、避免使用exit、die語句 同樣的,在程序中避免使用exit、die語句,使用exit、die會導致進程退出。可以使用\Workerman\Protocols\Http::end($msg)函數替代exit、die函數。 ### 4、HTTP相關函數的使用 WorkerMan運行在PHP CLI模式下,PHP CLI模式下無法使用HTTP相關的函數,例如header、setcookie、session_start等函數,請使用/Workerman/Protocols/Http.php文件中的header、setcookie、sessionStart等方法替換,調用方式類似Workerman\Protocols\Http::header()。 ### 5、Web入口文件 WorkerMan的WebServer默認使用index.php作為Web入口文件,例如配置$webserver->setRoot('www.example.com', '/home/www/');,則www.example.com 的入口文件為/home/www/index.php。當url訪問的文件(包括靜態文件和PHP文件)不存在時,會自動調用入口文件index.php ### 6、可用的超全局變量 可用的超全局變量有$_SERVER、$_GET、$_POST、$_FILES、$_COOKIE、$_SESSION、$_REQUEST。 無法使用php://input,請用$GLOBALS['HTTP_RAW_POST_DATA']代替。 注意HTTP文件上傳中,WorkerMan的$_FILES結構與傳統PHP中的$_FILES結構不同,WorkerMan中$_FILES結構類似 ``` var_export($_FILES); array( 0 => array( 'file_name' => 'logo.png', // 文件名稱 'file_size' => 23654, // 文件大小 'file_data' => '*****', // 文件的二進制數據 ), 1 => array( 'file_name' => 'file.tar.gz', // 文件名稱 'file_size' => 128966, // 文件大小 'file_data' => '*****', // 文件的二進制數據 ), ... ); ``` 保存文件代碼類似 ``` // 例如保存到/tmp目錄下 foreach($_FILES as $file_info) { file_put_contents('/tmp/'.$file_info['file_name'], $file_info['file_data']); } ``` WorkerMan中無法使用move_uploaded_file() is_uploaded_file()這些函數。 # **開始使用** webserver的啟動文件為Applications/webIm/start_webserver.php 使用webserver必須在[系統核心配置](系統核心配置.md) 中配置好相關配置, 然后在項目根目錄使用命令 php start.php start即可啟動(start.php會自動調用Applications/webIm/start_webserver.php)。其方式和[啟動停止](啟動停止)中介紹的一樣,這里不再重復介紹。 啟動后直接訪問配置中填寫的域名即可訪問。具體地址規則詳見[控制器](控制器)。 >[danger]注意:因workerman原理原因所有代碼修改后需要重啟進程才可生效,核心文件修改后需要用restart命令即php start.php restart,業務邏輯文件即子進程加載文件(一般為webApp中控制器視圖和擴展文件等)修改用reload平滑重啟命令即可即php start.php reload
                  <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>

                              哎呀哎呀视频在线观看