php代码片段

来源:互联网 发布:日本自卫队战斗力知乎 编辑:程序博客网 时间:2024/05/03 04:51
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能:同步,避免因并发访问而产生的冲突。
说明:某些操作耗时较长并只能允许一个用户操作,如:配置文件夹的恢复
代码片段:
    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);