功能:同步,避免因并发访问而产生的冲突。
说明:某些操作耗时较长并只能允许一个用户操作,如:配置文件夹的恢复
代码片段:
private static $locked = false; //锁定标志
function isLocked()
{
if(self::$locked != true)
{
$fp = fopen($this->strLockFile,"w");
self::$locked = flock($fp, LOCK_EX); // 进行排它型锁定
}
return self::$locked;
}
用法:将以上代码放入类中,当然也可稍加修改后,用于任何地方,调用isLocked函数后如返回值为true,则表示没有其它用户在使用相应操作,否则表示其它用户在使用该操作。
附注:我无法对以上代码进行严格测试,对web访问的并发亦无深刻理解,只是个人认会起同步作用。
功能:mysql数据库的备份
说明:使用mysqldump工具进行备份
代码片段:
$strFullPathname = ?; //备份文件的路径名
$mysqlbin = ?; //mysqldump命令文件所在路径
$user = ?; //登录数据库的用户名称
$password = ?; //登录数据库的用户密码
$arrDBName = array(?); //要备份的数据库名称
$arrIgnoreTable = array(); //要忽略的表格名称(库名.表名)
//命令字符中备份指定数据库的语句部分
$strDBNames = implode(' ', $arrDBName);
//命令字符中忽略指定表格的语句部分
foreach($arrIgnoreTable as $key=>$value)
if($value)
$arrIgnoreTable[$key] = " --ignore-table=$value ";
$strIgnoreTables = implode(' ', $arrIgnoreTable);
//命令
$strCmd = $mysqlbin."mysqldump --user=$user --password=$password --opt --allow-keywords --lock-all-tables --databases $strDBNames $strIgnoreTables > $strFullPathname";
$arrOutput = array();
$nRetcode = 0;
//执行备份命令。备份成功nRetcode为0,否则为其它值,错误信息在$arrOutput中。
exec($strCmd, $arrOutput, $nRetcode);
///
功能:mysql数据库的还原
说明:将使用mysqldump备份的数据库恢复
代码片段:
$strFullPathname = ?; //备份文件的路径名
$mysqlbin = ?; //mysql程序文件所在路径
$user = ?; //登录数据库的用户名称
$password = ?; //登录数据库的用户密码
//命令
$strCmd = $mysqlbin."mysql --user=$user --password=$password < $strFullPathname";
$arrOutput = array();
$nRetcode = 0;
//执行还原命令。还原成功nRetcode为0,否则为其它值,错误信息在$arrOutput中。
exec($strCmd, $arrOutput, $nRetcode);