```php
class DatabaseClone
{
public $link;
public function __construct($host, $username, $password)
{
$this->link = mysqli_connect($host, $username, $password);
mysqli_query($this->link, 'SET NAMES utf8');
mysqli_query($this->link, 'SET AUTOCOMMIT = 0');
mysqli_query($this->link, 'SET UNIQUE_CHECKS = 0');
mysqli_query($this->link, 'SET FOREIGN_KEY_CHECKS = 0');
}
public function fetch($query)
{
$results = [];
$query = mysqli_query($this->link, $query);
while ($row = mysqli_fetch_assoc($query)) {
$results[] = $row;
}
return $results;
}
public function copy($copyTo)
{
set_time_limit(-1);
ini_set('memory_limit', -1);
$query = mysqli_query($this->link, $sql = 'show databases');
while ($database = mysqli_fetch_assoc($query)) {
$database = $database['Database'];
if (in_array($database, ['mysql', 'information_schema', 'performance_schema'], true) === true) {
continue;
}
$createDatabase = mysqli_fetch_assoc(mysqli_query($this->link, 'SHOW CREATE DATABASE `'.$database.'`'));
mysqli_query($copyTo->link, $sql = 'DROP DATABASE IF EXISTS `'.$database.'`') or var_dump($sql);
mysqli_query($copyTo->link, $sql = $createDatabase['Create Database']) or var_dump($sql);
mysqli_select_db($this->link, $database);
mysqli_select_db($copyTo->link, $database);
$query2 = mysqli_query($this->link, $sql = 'show tables');
while ($table = mysqli_fetch_assoc($query2)) {
$table = current($table);
$createTable = mysqli_fetch_assoc(mysqli_query($this->link, 'SHOW CREATE TABLE `'.$table.'`'));
mysqli_query($copyTo->link, $sql = $createTable['Create Table']) or var_dump($sql);
$counts = current(mysqli_fetch_assoc(mysqli_query($this->link, 'SELECT COUNT(*) as counts FROM `'.$table.'`')));
$range = range(0, $counts - 1);
$offset = 0;
$limit = 200;
$chunks = array_chunk($range, $limit);
foreach ($chunks as $chunk) {
$query3 = mysqli_query($this->link, $sql = 'SELECT * FROM `'.$table.'` LIMIT '.$limit.' OFFSET '.$offset) or var_dump($database, $sql);
while ($row = mysqli_fetch_assoc($query3)) {
$keys = [];
$values = [];
foreach ($row as $key => $value) {
$keys[] = '`'.$key.'`';
$values[] = "'".addslashes($value)."'";
}
mysqli_query($copyTo->link, $sql = 'INSERT INTO `'.$table.'` ('.implode(',', $keys).') VALUES ('.implode(',', $values).')') or var_dump($database, $sql);
}
$offset += count($chunk);
}
}
}
}
}
$database = new DatabaseClone('localhost:3306', 'root', '');
$database->copy(new DatabaseClone('localhost:3308', 'root', ''));
```
2015年12月20日 星期日
2015年4月12日 星期日
uniform server 在windows下體積小快速安裝的wamp server
在Windows裡安裝wamp server
除了常見到的[xampp](https://www.apachefriends.org/zh_tw/index.html)、[wampserver](http://www.wampserver.com/en/)之外
還有這一套『[uniform server](http://www.uniformserver.com/)』
uniform server標榜的是體積小
主程式安裝檔案也才27M
不過相對功能就比較少
安裝程式只包含了apache、php5.4、mysql
其他的phpmyadmin、mariadb等等都可以利用plugin的方式來進行安裝
至於安裝的方法,只要將[檔案](http://sourceforge.net/projects/miniserver/files/latest/download?source=files)下載後,解壓縮到任一資料夾就可以使用了
以下為安裝步驟
1. 下載檔案(只有27M)

2. 點擊兩下解壓縮

3. 進入UniServerZ資料夾

4. 點擊UniController.exe(用系統管理員身份執行才能設定開機後自動執行wamp)

5. 允許防火牆

6. 更改mysql root預設密碼,不更改可直接點選cancel(預設密碼為 root)

7. 啟動apache及mysql

8. 設定開機執行apache及mysql


9. 這樣就設定完成了
![Alt text]()
其他比較常用到的apache及php設定
1.設定apache rewrite
2.設定php curl
要更改apache及php的設得先停止apache
設定rewrite的方法


設定php curl


訂閱:
文章 (Atom)