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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 原子操作 用于文件操作的Nette \ Utils \ SafeStram協議保證每個文件操作的原子性和隔離。 為什么它實際上好? 讓我們從一個簡單的例子開始,我們重復寫入相同的字符串到文件,然后讀取它:` ~~~ $s = str_repeat('Long String', 10000); $counter = 1000; while ($counter--) { file_put_contents('soubor', $s); // write it $readed = file_get_contents('soubor'); // read it if ($s !== $readed) { // check it echo 'Strings are different!'; } } ~~~ 看起來回聲的字符串是不同的! 命令不能被執行。 相反是真的。 嘗試在兩個瀏覽器中同時運行此腳本。 錯誤幾乎立即發生。 這是因為當在同一時間(即,在多個線程)重復執行時,代碼是不安全的。 這是互聯網上沒有什么不尋常的,在那里幾個人經常連接到一個網站在同一時間。 因此,確保您的應用程序可以一次處理多個線程,這是非常重要的 - 它是線程安全的,因為本機PHP函數不是。 否則,您可以預期數據丟失和奇怪的錯誤發生。 如何確保,像file_get_contets或fwrite的函數原子性地行為? SafeStream協議提供了一個安全的解決方案,所以我們可以通過標準的PHP函數原子操作文件。 加載Nette Framework時,協議自動可用。 之后,你只需要前綴的文件名nette.safe://: ~~~ $handle = fopen('nette.safe://test.txt', 'x'); // prefix the filename with nette.safe:// fwrite($handle, 'Nette Framework'); // for now, the data is written into a temporary file fclose($handle); // and only now the file is renamed to test.txt ~~~ 你當然可以使用所有熟悉的功能,如: ~~~ file_put_contents('nette.safe://test.txt', $content); $ini = parse_ini_file('nette.safe://autoload.ini'); ~~~ SafeStream保證: 原子性:文件作為一個整體寫或根本不寫。 隔離:沒有人可以開始讀取尚未完全寫入的文件。 如果您以“a”模式(附加)寫入現有文件,SafeStream將創建它的副本,只有在成功寫入后,它才會將其重命名為原始名稱。 因此,在此模式下寫入比在其他模式下更耗資源。
                  <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>

                              哎呀哎呀视频在线观看