我写了一个锁定功能来保护功能不会同时运行。但是我觉得这个功能效果不好,并且在几秒钟内启动时功能可能会同时运行。
我的锁定功能:
function lockFunction($function){
$lock = SERVER_ROOT.'/lock/'.$function.'.lock';
$f = @fopen($lock, 'x');
if($f === false){
# Lockfile exists, script is running
return false;
}else{
# Script is not running, now locked
fclose($f);
return true;
}
}
当功能完成后,我解锁功能
function unlockFunction($function){
@unlink(SERVER_ROOT.'/lock/'.$function.'.lock');
}
我如何使用该功能:
的script.php
if(lockFunction('functiontolock')){
# Run code that may not be run simultaneously
# sleep just as example of runtime.
sleep(10);
unlockFunction('functiontolock');
}
如果script.php
在例如{{1}}内运行两次,是否会导致问题2秒。
注意 运行此服务器的服务器使用群集技术,这意味着文件位于文件服务器上,数据库位于不同的服务器上等。文件通过网络访问。不知道它会减慢这个功能。