<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## SAE介紹 Sina App Engine(簡稱**SAE**)是新浪研發中心開發的國內首個公有云計算平臺,是新浪云計算戰略的核心組成部分,作為一個簡單高效的分布式Web服務開發、運行平臺越來越受開發者青睞。 SAE環境和普通環境有所不同,它是一個分布式服務器集群,能讓你的程序同時運行在多臺服務器中。并提供了很多高效的分布式服務。SAE為了提升性能和安全,禁止了本地IO寫操作,使用MemcacheX、Storage等存儲型服務代替傳統IO操作,效率比傳統IO讀寫操作高,有效解決因IO瓶頸導致程序性能低下的問題。 > 正是因為SAE和普通環境的不同,使得普通程序不能直接放在SAE上,需要經過移植才能放在SAE上運行。也使得很多能在SAE上運行的程序不能在普通環境下運行。 ThinkPHP3.2核心內置了對SAE平臺的支持(采用了應用模式的方式),具有自己的獨創特性,能夠最大程度的使用ThinkPHP的標準特性,讓開發人員感受不到SAE和普通環境的差別。甚至可以不學習任何SAE知識,只要會ThinkPHP開發,就能將你的程序運行在SAE上。 SAE版ThinkPHP具有以下特性: - 橫跨性:能讓同樣的代碼既能在SAE環境下運行,也能在普通環境下運行。解決了使用SAE不能在本地調試代碼的問題。 - 平滑性:我們還是按照以前一樣使用ThinkPHP,但是您已經不知不覺的使用了SAE服務,不用特意學習SAE服務,降低學習成本。比如你不用特意的去學習KVDB服務,你在SAE環境下使用ThinkPHP的F函數就已經使用了KVDB的服務。 - 完整性:SAE開發下面功能沒有任何刪減,支持ThinkPHP標準模式的所有功能。 > 大多SAE移植程序都是使用Wrappers實現,SAE版ThinkPHP沒有使用Wrappers,使用SAE的原始服務接口,運行效率比用Wrappers更高。 3.2版本中你無需考慮SAE平臺的部署,在本地采用標準模式開發完成后,直接部署到SAE平臺后,系統會自動轉換為SAE模式運行。 > 在本地開發完成后,上傳到SAE平臺需要做一些初始化工作,例如初始化Mysql,Memcache,KVDB服務。 SAE平臺不支持IO寫操作,所以你不能在SAE上首次運行入口文件生成項目目錄。你可以在本地運行入口文件,本地生成好項目目錄后再提交到SAE上。 > 注意:如果要部署到SAE平臺的話,你的應用代碼不要直接進行文件讀寫操作,而采用ThinkPHP封裝的方法或者函數進行操作即可。 ## SAE配置 SAE引擎運行時擁有SAE自己的慣例配置和專有配置,因此配置文件加載順序為: ~~~ 慣例配置->項目配置->SAE慣例配置->SAE專有配置 ~~~ > SAE慣例配置和SAE專有配置中的配置項將會覆蓋項目配置。 **SAE慣例配置**:位于系統目錄的 /Mode/Sae/convention.php,其中定義了程序在SAE上運行時固定的數據庫連接配置項。 **SAE專有配置**:位于應用的公共Conf目錄下,文件名為config_sae.php,大家可以將針對SAE的配置寫到其中。 > 注:SAE慣例配置和SAE專有配置是針對SAE環境的獨有配置,在本地運行時將不會加載。 ## 數據庫 開發者不需要在應用配置文件(config.php)中定義和SAE相關的數據庫配置項,只需要定義本地調試時連接的數據庫即可。代碼提交到SAE時無需修改任何配置項也能運行,因為SAE慣例配置會自動覆蓋你的項目配置文件中的數據庫配置。 > 代碼在SAE上運行時會進行分布式數據庫連接,并讀寫分離。 ## 緩存 在SAE開發過程中,你仍然可以使用ThinkPHP內置的緩存方法進行處理。下面是SAE引擎使用不同的緩存方法在本地和SAE平臺下的區別(注意這個區別SAE引擎會自動判斷處理): | 緩存方法 | 本地運行 | SAE平臺 | |-----|-----|-----| | S緩存 | 默認使用File方式實現 | 固定使用Memcache實現 | | F緩存 | 使用File實現 | 使用KVDB實現 | | 靜態緩存 | 生成靜態Html文件 | 靜態文件存入KVDB中 | | SQL隊列 | 支持File、Xcache和APC方式 | 使用KVDB存儲 | ## 日志 你無需單獨為SAE平臺寫日志功能,一切都是框架的Log類自動處理的。ThinkPHP在SAE平臺的日志寫入是調用了**sae_debug**方法,具體工作由`Think\Log\Driver\Sae`類完成。 在本地運行會將日志記錄到項目的項目的`Runtime/Logs`文件夾下,而在SAE上運行會將日志記錄到SAE平臺的日志中心: [http://sae.sina.com.cn/?m=applog](http://sae.sina.com.cn/?m=applog) 請在搜索框選擇中的下拉菜單處選擇“debug”進行查看。 ## 文件上傳 文件上傳仍然使用`Think\Upload`擴展類庫上傳文件,使用方法不變。同樣的代碼在本地運行時將會上傳到指定的目錄,在SAE上運行時就會自動使用**Storage**服務,將文件上傳到指定的Storage中。 首先你需要在SAE平臺上創建一個Storage的domain用于存放上傳的文件: [http://sae.sina.com.cn/?m=storage](http://sae.sina.com.cn/?m=storage) 這里可以建立多個domain。而我們的文件會上傳到哪個domain,是由上傳路徑的第一個目錄名稱決定的。如: ~~~ $upload->rootPath = './Public/'; $upload->savePath = 'Uploads/'; ~~~ 會上傳到**名為Public的domain**。 > 你也不用在這個domain下創建Uploads文件夾,SAE的Storage服務會為你自動創建。 圖片地址的問題: 我們使用UploadFile類上傳圖片,在本地和在SAE下圖片的瀏覽地址是不一樣的。比如有張圖片地址為 "/Public/upload/1.jpg" , /Public 是一個模板替換變量, 他會被替換為Public文件夾所在目錄的地址, 我們可以通過瀏覽器的查看源代碼功能查看被替換后是什么效果。 可以看見, 替換后為 "/Public/upload/1.jpg" 。 但是在SAE上圖片并沒有在Public/upload目錄下,而是在storage中。我們需要將 /Public/替換為storage的域名,在SAE上才能正常顯示。 我們在SAE專有配置`Conf/config_sae.php`文件中定義如下代碼: ~~~ <?php return array( 'TMPL_PARSE_STRING'=>array( '/Public/upload' => $st->getUrl('public','upload'), ) ); ~~~ 這樣,在SAE上會把 `/Public/upload`**替換為storage的地址**, 在SAE上圖片也能正常顯示。 ## 隱藏index.php SAE不支持`.htaccess`文件,但我們可以使用SAE提供的**AppConfig**服務實現偽靜態。 在你項目的根目錄建立`config.yaml`文件,代碼為: ~~~ handle: - rewrite: if(!is_dir() && !is_file() && path~"^(.*)$") goto "index.php/$1" ~~~ 這樣就可以隱藏入口了。 比如這樣的地址 `http://serverName/index.php/Blog/read/id/1`也能通過 `http://serverName/Blog/read/id/1`訪問。 ## 代碼橫跨性建議 ThinkPHP的SAE模式,是具有橫跨性的,請不要破壞它的橫跨性。比如,不要在項目配置文件中寫和SAE數據庫相關配置項。自己寫代碼時,也要盡量做到橫跨性,這樣就可以讓同樣的代碼既能在SAE下運行,也能在普通環境下運行,使你在本地調試完后上傳到SAE也不用修改任何代碼就能運行。 **下面是一些保持代碼橫跨性的建議:** (1)盡量少使用原生的SAE服務 能使用ThinkPHP自帶函數替代的,盡量使用ThinkPHP自帶函數。比如要使用SAE的KVDB服務,在ThinkPHP中完全可以用F函數代替。如果要使用SAE的Memcache服務,都使用S函數實現。這樣就不會導致你的代碼從SAE轉移到普通環境后性能很低。個別SAE服務無法使用ThinkPHP自帶函數代替的,才考慮使用原生的SAE服務。 (2)利用SAE專有配置 當遇到SAE和普通環境配置需要不一樣時,你可以把普通環境的配置寫到項目配置文件Conf/config.php中,而將SAE需要用的配置寫到SAE專有配置Conf/config_sae.php中。(大多數差異化的配置,SAE慣例配置文件已經內置處理了)
                  <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>

                              哎呀哎呀视频在线观看