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

                ``` <?php /** * @link http://kodcloud.com/ * @author warlee | e-mail:kodcloud@qq.com * @copyright warlee 2014.(Shanghai)Co.,Ltd * @license http://kodcloud.com/tools/license/license.txt */ /** * 安全讀取文件,避免并發下讀取數據為空 * * @param $file 要讀取的文件路徑 * @param $timeout 讀取超時時間 * @return 讀取到的文件內容 | false - 讀取失敗 */ function file_read_safe($file, $timeout = 5) { if (!$file || !file_exists($file)) return false; $fp = @fopen($file, 'r'); if (!$fp) return false; $startTime = microtime(true); // 在指定時間內完成對文件的獨占鎖定 do { $locked = flock($fp, LOCK_EX | LOCK_NB); if (!$locked) { usleep(mt_rand(1, 50) * 1000); // 隨機等待1~50ms再試 } } while ((!$locked) && ((microtime(true) - $startTime) < $timeout)); if ($locked && filesize($file) >= 0) { $result = @fread($fp, filesize($file)); flock($fp, LOCK_UN); fclose($fp); if (filesize($file) == 0) { return ''; } return $result; } else { flock($fp, LOCK_UN); fclose($fp); return false; } } /** * 安全寫文件,避免并發下寫入數據為空 * * @param $file 要寫入的文件路徑 * @param $buffer 要寫入的文件二進制流(文件內容) * @param $timeout 寫入超時時間 * @return 寫入的字符數 | false - 寫入失敗 */ function file_write_safe($file, $buffer, $timeout = 5) { clearstatcache(); if (strlen($file) == 0 || !$file) return false; // 文件不存在則創建 if (!file_exists($file)) { @file_put_contents($file, ''); } if(!is_writeable($file)) return false; // 不可寫 // 在指定時間內完成對文件的獨占鎖定 $fp = fopen($file, 'r+'); $startTime = microtime(true); do { $locked = flock($fp, LOCK_EX); if (!$locked) { usleep(mt_rand(1, 50) * 1000); // 隨機等待1~50ms再試 } } while ((!$locked) && ((microtime(true) - $startTime) < $timeout)); if ($locked) { $tempFile = $file.'.temp'; $result = file_put_contents($tempFile, $buffer, LOCK_EX); if (!$result || !file_exists($tempFile)) { flock($fp, LOCK_UN); fclose($fp); return false; } @unlink($tempFile); ftruncate($fp, 0); rewind($fp); $result = fwrite($fp, $buffer); flock($fp, LOCK_UN); fclose($fp); clearstatcache(); return $result; } else { flock($fp, LOCK_UN); fclose($fp); return false; } } ```
                  <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>

                              哎呀哎呀视频在线观看