cron上運行php命令,並備份數據庫

</pre><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;"><strong>cron上運行php命令,並備份數據庫</strong></div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;">要在cron上運行php程序,需要在命令行中先找到php的運行位置,如/home/user/bin/php,管理員一般都知道自己的php安裝位置,不知道也沒關係,可以通過whereis php這個命令來查找php的安裝位置。</div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;"><strong><em>/home/user/bin/php a.php</em></strong></div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;">這樣我們就運行了a.php這個文件。但是要php執行備份數據庫的命令還是不夠的,我們知道備份數據的命令是mysqldump -u.....>mysql.sql形式的,並且是運行在命令行中的(當然還有其他方式,但這個最便捷),因此我們還需要在php文件中輸出命令行命令,也就是system($cmd,$error)這個函數。</div><div style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 21px; font-size: 14px;">下面附上mysqldump.php的部分代碼。</div><pre name="code" class="php"><?php
//數據庫備份基類
class MysqlDump{
	private $cmd;
	public function __construct($dbUser,$dbPass,$dbName,$dest,$zip='gz')
	{
		$zip_util = array('gz'=>'gzip','bz2'=>'bzip2');
		if(array_key_exists($zip,$zip_util))
		{
			$fname = $dbName . '.' . date('w') . '.sql.' .$zip;
			$this->cmd = 'mysqldump -u' . $dbUser . ' -p' . $dbPass . ' ' . $dbName . '| ' .$zip_util[$zip] . '>' .$dest . '/' . $fname ;
		}
		else
		{
			$fname = $dbName . '.' . date('w') . '.sql';
			$this->cmd = 'mysqldump -u' . $dbUser . ' -p' . $dbPass . ' ' . $dbName . '>' .$dest . '/' . $fname ;
		}
	}

	public function backup()
	{
		system($this->cmd,$error);
		if($error)
		{
			trigger_error('Backup faild: ' . $error);
		}
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章