【发布时间】:2013-03-13 08:40:23
【问题描述】:
我想知道下面的代码是否正确编写。我正在尝试编写一个安全的关键部分,该部分写入文件并尝试预测可能出现的任何问题。
有什么我应该注意的吗?我的意思是,我写了 try-catch 语句以防羊群中出现问题,因此它设法关闭文件并释放锁。还有什么需要注意的吗?
/*
* Write to file
*/
if ( file_exists($sPath) )
{
//CRITICAL PART (start)
$oFile = fopen($sPath, "a");
//If could not open file then just return
if ( $oFile == false ) return;
try{
//Acquire lock
if ( flock($oFile, LOCK_EX) )
{
//Append a new line
fwrite($oFile, "\n"."sometext");
}
}catch(Exception $e){
//Release lock before exiting
fclose($oFile);
return;
}
//Release lock
fclose($oFile);
//CRITICAL PART (end)
}
【问题讨论】:
-
哦...你是对的。很好的观察hakre,谢谢。
-
如果你问一个关于具体问题的具体编程问题,Stackoverflow 效果最好。像 “我有什么需要注意的地方吗?” + 这是我的代码在 Q&A 格式中效果不佳。
-
@AndreiBogdan 即使他们抛出异常,你也应该使用
finally块来释放资源。 DRY