首页 > 代码库 > PHP Client for Mysql Binlog

PHP Client for Mysql Binlog

PHP解析MySQL Binlog,依赖于mysql-replication-listener库 
详见:https://github.com/bullsoft/php-binlog

Install MySQL Replication Listener

  • https://github.com/bullsoft/mysql-replication-listener/archive/master.zip
unzip mysql-replication-listener-master.zipcd mysql-replication-listener-mastercmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-replicationmake & make install
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Install php-binlog

  • https://github.com/bullsoft/php-binlog/archive/master.zip
unzip php-binlog-master.zipcd php-binlog-master/ext/usr/local/php5.5.15/bin/phpize./configure --with-php-config=/usr/local/php5.5.15/bin/php-config --with-mysql-binlog=/usr/local/mysql-replication
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Examples

注:Binlog为行格式

<?php$link = binlog_connect("mysql://root:cpyf@127.0.0.1:3306");//binlog_set_position($link, 4);  //binlog_set_position($link, 4, ‘mysql-bin.000006‘);                           while($event=binlog_wait_for_next_event($link)) {    // it will block here                                     switch($event[‘type_code‘]) {        case BINLOG_DELETE_ROWS_EVENT:            var_dump($event);            // do what u want ...                                       break;        case BINLOG_WRITE_ROWS_EVENT:            var_dump($event);            // do what u want ...                                       break;        case BINLOG_UPDATE_ROWS_EVENT:            var_dump($event);            // do what u want ...                                       break;        default:            // var_dump($event);                                        break;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

Update_rows

update `type` set type_id = 22 WHERE id in (58, 59);
  • 1
  • 1
array(5) {  ‘type_code‘ =>  int(24)  ‘type_str‘ =>  string(11) "Update_rows"  ‘db_name‘ =>  string(5) "cloud"  ‘table_name‘ =>  string(4) "type"  ‘rows‘ =>  array(4) {    [0] =>    array(5) {      [0] =>      string(2) "58"      [1] =>      string(8) "adsfasdf"      [2] =>      string(4) "asdf"      [3] =>      string(2) "22"      [4] =>      string(1) "0"    }    [1] =>    array(5) {      [0] =>      string(2) "58"      [1] =>      string(8) "adsfasdf"      [2] =>      string(4) "asdf"      [3] =>      string(1) "4"      [4] =>      string(1) "0"    }    [2] =>    array(5) {      [0] =>      string(2) "59"      [1] =>      string(8) "adsfasdf"      [2] =>      string(4) "asdf"      [3] =>      string(2) "22"      [4] =>      string(1) "0"    }    [3] =>    array(5) {      [0] =>      string(2) "59"      [1] =>      string(8) "adsfasdf"      [2] =>      string(4) "asdf"      [3] =>      string(1) "4"      [4] =>      string(1) "0"    }  }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

Delete_rows

delete from `type` WHERE id in (58, 59);
  • 1
  • 1
array(5) {  ‘type_code‘ =>  int(25)  ‘type_str‘ =>  string(11) "Delete_rows"  ‘db_name‘ =>  string(5) "cloud"  ‘table_name‘ =>  string(4) "type"  ‘rows‘ =>  array(2) {    [0] =>    array(5) {      [0] =>      string(2) "58"      [1] =>      string(8) "adsfasdf"      [2] =>      string(4) "asdf"      [3] =>      string(2) "22"      [4] =>      string(1) "0"    }    [1] =>    array(5) {      [0] =>      string(2) "59"      [1] =>      string(8) "adsfasdf"      [2] =>      string(4) "asdf"      [3] =>      string(2) "22"      [4] =>      string(1) "0"    }  }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

Write_rows

insert into type values (Null, "Hello, World", "Best world", 4, 0), (NULL, "你好,世界", "世界很美好", 3, 5);
  • 1
  • 1
array(5) {  ‘type_code‘ =>  int(23)  ‘type_str‘ =>  string(10) "Write_rows"  ‘db_name‘ =>  string(5) "cloud"  ‘table_name‘ =>  string(4) "type"  ‘rows‘ =>  array(2) {    [0] =>    array(5) {      [0] =>      string(2) "95"      [1] =>      string(12) "Hello, World"      [2] =>      string(10) "Best world"      [3] =>      string(1) "4"      [4] =>      string(1) "0"    }    [1] =>    array(5) {      [0] =>      string(2) "96"      [1] =>      string(15) "你好,世界"      [2] =>      string(15) "世界很美好"      [3] =>      string(1) "3"      [4] =>      string(1) "5"    }  }}

PHP Client for Mysql Binlog