本文共 1027 字,大约阅读时间需要 3 分钟。
php脚本文件执行锁定代码
有时候会出现PHP脚本并发执行的情况,如果想要避免这种情况,可以尝试下面的方法,为PHP脚本加锁
//针对php脚本文件执行锁定的代码,避免脚本在同一时间重复运行,http://ken.01h.net/
define('PHP_LOCK_FILE', dirname(__FILE__) . '/php.lock');
ini_set('display_errors', true);
ini_set('error_reporting', E_ALL);
global $php_lock_fp;
$php_lock_fp = @fopen(PHP_LOCK_FILE, "w+") or die("Couldn't open the lock file !\n");
if (flock($php_lock_fp, LOCK_EX + LOCK_NB)) { //排它型锁定
register_shutdown_function('php_release_lock'); //当脚本结束时执行该方法,用于解锁
fwrite($php_lock_fp, getmypid());
} else {
@fclose($php_lock_fp);
exit("Couldn't lock the file !\n");
}
function php_release_lock()
{
global $php_lock_fp;
if(is_resource($php_lock_fp)){
flock($php_lock_fp, LOCK_UN); //释放锁定
@fclose($php_lock_fp);
printf("Release lock!\n");
}
@unlink(PHP_LOCK_FILE);
printf("php exit!\n");
}
?>
将以上代码保存为phplock.php文件,在需要用到锁定功能的脚本代码中引入该文件,示例如下:
set_time_limit(0);
require(dirname(__FILE__) . '/phplock.php'); //引入脚本文件锁定代码
//test
for($i=0; $i<10; $i++){
echo str_repeat(" ", 1024);
echo $i."
\n";flush();
sleep(5);
}
?>
标签:PHP
转载地址:http://namkm.baihongyu.com/