<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 15.2 包裝器操作 # 包裝器操作 除了url\_stat()函數, 包裝器操作中在const char \*label元素之前的每個操作都可以用于激活的流實例上. 每個函數的意義如下: stream\_opener() 實例化一個流實例. 當某個用戶空間的fopen()函數被調用時, 這個函數將被調用. 這個函數返回的php\_stream實例是fopen()函數返回的文件資源句柄的內部表示. 集成函數比如file(), file\_get\_contents(), file\_put\_contents(), readfile()等等, 在請求包裝資源時, 都使用這個包裝器ops. stream\_closer() 當一個流實例結束其生命周期時這個函數被調用. stream\_opener()時分配的所有資源都應該在這個函數中被釋放. stream\_stat() 類似于用戶空間的fstat()函數, 這個函數應該填充ssb結構體(實際上只包含一個struct statbuf sb結構體成員), dir\_opener() 和stream\_opener()行為一致, 不過它是調用opendir()一族的用戶空間函數時被調用的. 目錄流使用的底層流實現和文件流遵循相同的規則;不過目錄流只需要返回包含在打開的目錄中找到的文件名的記錄, 它的大小為struct dirent這個結構體的大小. ## 靜態包裝器操作 包裝器操作函數中的其他函數是在URI路徑上執行原子操作, 具體取決于包裝器協議. 在php4.3的php\_stream\_wrapper\_ops結構體中只有url\_stat()和unlink(); 其他的方式是到php 5.0后才定義的, 編碼時應該適時的使用#ifdef塊說明. url\_stat() stat()族函數使用, 返回文件元數據, 比如訪問授權, 大小, 類型; 以及訪問, 修改,創建時間. 盡管這個函數是在php 4.3引入流包裝層時出現在php\_stream\_wrapper\_ops結構體中的, 但直到php 5.0才被用戶空間的stat()函數使用. unlink() 和posix文件系統的同名函數語義相同, 它執行文件刪除. 如果對于當前的包裝器刪除沒有意義, 比如內建的http://包裝器, 這個函數應該被定義為NULL, 以便內核去引發適當的錯誤消息. rename() 當用戶空間的rename()函數的參數$from和$to參數指向的是相同的底層包裝器實現, php則將這個重命名請求分發到包裝器的rename函數. mkdir() & rmdir() 這兩個函數直接映射到對應的用戶空間函數. ## links - [目錄](preface.md) - 15.1 [php流的表象之下](15.1.html) - 15.3 [實現一個包裝器](15.3.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>

                              哎呀哎呀视频在线观看