当前位置: 首页>>代码示例>>PHP>>正文


PHP io_unlock函数代码示例

本文整理汇总了PHP中io_unlock函数的典型用法代码示例。如果您正苦于以下问题:PHP io_unlock函数的具体用法?PHP io_unlock怎么用?PHP io_unlock使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了io_unlock函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: getNumberingNextNumber

function getNumberingNextNumber($db, $start)
{
    io_lock($db);
    $ar = unserialize(io_readFile($db, false));
    if (!$ar) {
        $ar['saved'] = $start;
        $ar['start'] = $start;
    } else {
        $number = $ar['saved'];
        if ($ar['start'] != $start) {
            $ar['start'] = $start;
            $number = $start;
        } else {
            $number = $ar['saved'];
        }
    }
    if ($number < $start) {
        $number = $start - 1;
    }
    $ar['saved'] = ++$number;
    file_put_contents($db, serialize($ar));
    io_unlock($db);
    return "{$number}";
}
开发者ID:omusico,项目名称:isle-web-framework,代码行数:24,代码来源:getnum.php

示例2: runTrimRecentChanges

/**
 * Trims the recent changes cache (or imports the old changelog) as needed.
 *
 * @param media_changes If the media changelog shall be trimmed instead of
 * the page changelog
 *
 * @author Ben Coburn <btcoburn@silicodon.net>
 */
function runTrimRecentChanges($media_changes = false)
{
    global $conf;
    echo "runTrimRecentChanges({$media_changes}): started" . NL;
    $fn = $media_changes ? $conf['media_changelog'] : $conf['changelog'];
    // Trim the Recent Changes
    // Trims the recent changes cache to the last $conf['changes_days'] recent
    // changes or $conf['recent'] items, which ever is larger.
    // The trimming is only done once a day.
    if (@file_exists($fn) && @filemtime($fn . '.trimmed') + 86400 < time() && !@file_exists($fn . '_tmp')) {
        @touch($fn . '.trimmed');
        io_lock($fn);
        $lines = file($fn);
        if (count($lines) <= $conf['recent']) {
            // nothing to trim
            io_unlock($fn);
            echo "runTrimRecentChanges({$media_changes}): finished" . NL;
            return false;
        }
        io_saveFile($fn . '_tmp', '');
        // presave tmp as 2nd lock
        $trim_time = time() - $conf['recent_days'] * 86400;
        $out_lines = array();
        for ($i = 0; $i < count($lines); $i++) {
            $log = parseChangelogLine($lines[$i]);
            if ($log === false) {
                continue;
            }
            // discard junk
            if ($log['date'] < $trim_time) {
                $old_lines[$log['date'] . ".{$i}"] = $lines[$i];
                // keep old lines for now (append .$i to prevent key collisions)
            } else {
                $out_lines[$log['date'] . ".{$i}"] = $lines[$i];
                // definitely keep these lines
            }
        }
        if (count($lines) == count($out_lines)) {
            // nothing to trim
            @unlink($fn . '_tmp');
            io_unlock($fn);
            echo "runTrimRecentChanges({$media_changes}): finished" . NL;
            return false;
        }
        // sort the final result, it shouldn't be necessary,
        //   however the extra robustness in making the changelog cache self-correcting is worth it
        ksort($out_lines);
        $extra = $conf['recent'] - count($out_lines);
        // do we need extra lines do bring us up to minimum
        if ($extra > 0) {
            ksort($old_lines);
            $out_lines = array_merge(array_slice($old_lines, -$extra), $out_lines);
        }
        // save trimmed changelog
        io_saveFile($fn . '_tmp', implode('', $out_lines));
        @unlink($fn);
        if (!rename($fn . '_tmp', $fn)) {
            // rename failed so try another way...
            io_unlock($fn);
            io_saveFile($fn, implode('', $out_lines));
            @unlink($fn . '_tmp');
        } else {
            io_unlock($fn);
        }
        echo "runTrimRecentChanges({$media_changes}): finished" . NL;
        return true;
    }
    // nothing done
    echo "runTrimRecentChanges({$media_changes}): finished" . NL;
    return false;
}
开发者ID:yjliugit,项目名称:dokuwiki,代码行数:79,代码来源:indexer.php

示例3: io_deleteFromFile

/**
 * Delete exact linematch for $badline from $file.
 *
 * Be sure to include the trailing newline in $badline
 *
 * Uses gzip if extension is .gz
 *
 * 2005-10-14 : added regex option -- Christopher Smith <chris@jalakai.co.uk>
 *
 * @author Steven Danz <steven-danz@kc.rr.com>
 * @return bool true on success
 */
function io_deleteFromFile($file, $badline, $regex = false)
{
    if (!@file_exists($file)) {
        return true;
    }
    io_lock($file);
    // load into array
    if (substr($file, -3) == '.gz') {
        $lines = gzfile($file);
    } else {
        $lines = file($file);
    }
    // remove all matching lines
    if ($regex) {
        $lines = preg_grep($badline, $lines, PREG_GREP_INVERT);
    } else {
        $pos = array_search($badline, $lines);
        //return null or false if not found
        while (is_int($pos)) {
            unset($lines[$pos]);
            $pos = array_search($badline, $lines);
        }
    }
    if (count($lines)) {
        $content = join('', $lines);
        if (substr($file, -3) == '.gz') {
            $fh = @gzopen($file, 'wb9');
            if (!$fh) {
                msg("Removing content from {$file} failed", -1);
                io_unlock($file);
                return false;
            }
            gzwrite($fh, $content);
            gzclose($fh);
        } else {
            $fh = @fopen($file, 'wb');
            if (!$fh) {
                msg("Removing content from {$file} failed", -1);
                io_unlock($file);
                return false;
            }
            fwrite($fh, $content);
            fclose($fh);
        }
    } else {
        @unlink($file);
    }
    io_unlock($file);
    return true;
}
开发者ID:rodrigoaustincascao,项目名称:Service-Desk-IMC,代码行数:62,代码来源:io.php

示例4: _trimRecentCommentsLog

 /**
  * Trims the recent comments cache to the last $conf['changes_days'] recent
  * changes or $conf['recent'] items, which ever is larger.
  * The trimming is only done once a day.
  *
  * @author Ben Coburn <btcoburn@silicodon.net>
  */
 function _trimRecentCommentsLog($changelog)
 {
     global $conf;
     if (@file_exists($changelog) && filectime($changelog) + 86400 < time() && !@file_exists($changelog . '_tmp')) {
         io_lock($changelog);
         $lines = file($changelog);
         if (count($lines) < $conf['recent']) {
             // nothing to trim
             io_unlock($changelog);
             return true;
         }
         io_saveFile($changelog . '_tmp', '');
         // presave tmp as 2nd lock
         $trim_time = time() - $conf['recent_days'] * 86400;
         $out_lines = array();
         $num = count($lines);
         for ($i = 0; $i < $num; $i++) {
             $log = parseChangelogLine($lines[$i]);
             if ($log === false) {
                 continue;
             }
             // discard junk
             if ($log['date'] < $trim_time) {
                 $old_lines[$log['date'] . ".{$i}"] = $lines[$i];
                 // keep old lines for now (append .$i to prevent key collisions)
             } else {
                 $out_lines[$log['date'] . ".{$i}"] = $lines[$i];
                 // definitely keep these lines
             }
         }
         // sort the final result, it shouldn't be necessary,
         // however the extra robustness in making the changelog cache self-correcting is worth it
         ksort($out_lines);
         $extra = $conf['recent'] - count($out_lines);
         // do we need extra lines do bring us up to minimum
         if ($extra > 0) {
             ksort($old_lines);
             $out_lines = array_merge(array_slice($old_lines, -$extra), $out_lines);
         }
         // save trimmed changelog
         io_saveFile($changelog . '_tmp', implode('', $out_lines));
         @unlink($changelog);
         if (!rename($changelog . '_tmp', $changelog)) {
             // rename failed so try another way...
             io_unlock($changelog);
             io_saveFile($changelog, implode('', $out_lines));
             @unlink($changelog . '_tmp');
         } else {
             io_unlock($changelog);
         }
         return true;
     }
 }
开发者ID:nickharambee,项目名称:plugin-discussion,代码行数:60,代码来源:action.php

示例5: io_replaceInFile

/**
 * Replace one or more occurrences of a line in a file.
 *
 * The default, when $maxlines is 0 is to delete all matching lines then append a single line.
 * A regex that matches any part of the line will remove the entire line in this mode.
 * Captures in $newline are not available.
 *
 * Otherwise each line is matched and replaced individually, up to the first $maxlines lines
 * or all lines if $maxlines is -1. If $regex is true then captures can be used in $newline.
 *
 * Be sure to include the trailing newline in $oldline when replacing entire lines.
 *
 * Uses gzip if extension is .gz
 * and bz2 if extension is .bz2
 *
 * @author Steven Danz <steven-danz@kc.rr.com>
 * @author Christopher Smith <chris@jalakai.co.uk>
 * @author Patrick Brown <ptbrown@whoopdedo.org>
 *
 * @param string $file     filename
 * @param string $oldline  exact linematch to remove
 * @param string $newline  new line to insert
 * @param bool   $regex    use regexp?
 * @param int    $maxlines number of occurrences of the line to replace
 * @return bool true on success
 */
function io_replaceInFile($file, $oldline, $newline, $regex = false, $maxlines = 0)
{
    if ((string) $oldline === '') {
        trigger_error('$oldline parameter cannot be empty in io_replaceInFile()', E_USER_WARNING);
        return false;
    }
    if (!file_exists($file)) {
        return true;
    }
    io_lock($file);
    // load into array
    if (substr($file, -3) == '.gz') {
        if (!DOKU_HAS_GZIP) {
            return false;
        }
        $lines = gzfile($file);
    } else {
        if (substr($file, -4) == '.bz2') {
            if (!DOKU_HAS_BZIP) {
                return false;
            }
            $lines = bzfile($file, true);
        } else {
            $lines = file($file);
        }
    }
    // make non-regexes into regexes
    $pattern = $regex ? $oldline : '/^' . preg_quote($oldline, '/') . '$/';
    $replace = $regex ? $newline : addcslashes($newline, '\\$');
    // remove matching lines
    if ($maxlines > 0) {
        $count = 0;
        $matched = 0;
        while ($count < $maxlines && (list($i, $line) = each($lines))) {
            // $matched will be set to 0|1 depending on whether pattern is matched and line replaced
            $lines[$i] = preg_replace($pattern, $replace, $line, -1, $matched);
            if ($matched) {
                $count++;
            }
        }
    } else {
        if ($maxlines == 0) {
            $lines = preg_grep($pattern, $lines, PREG_GREP_INVERT);
            if ((string) $newline !== '') {
                $lines[] = $newline;
            }
        } else {
            $lines = preg_replace($pattern, $replace, $lines);
        }
    }
    if (count($lines)) {
        if (!_io_saveFile($file, join('', $lines), false)) {
            msg("Removing content from {$file} failed", -1);
            io_unlock($file);
            return false;
        }
    } else {
        @unlink($file);
    }
    io_unlock($file);
    return true;
}
开发者ID:boycaught,项目名称:dokuwiki,代码行数:88,代码来源:io.php


注:本文中的io_unlock函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。