slam/mysql-php

MySQL附带的mysql cli的PHP版本

v1.1.0 2023-01-04 10:23 UTC

README

Latest Stable Version Downloads Integrate Code Coverage

MySQL附带的mysql cli的PHP轻量级版本。

为什么

  1. 您处于仅PHP的环境中,例如PHP Docker镜像
  2. 您需要导入大量的mysql dump
  3. 您无法访问本地的mysql客户端

性能

由于使用了流,速度与原始的mysql二进制文件完全相同。

支持的格式

用法

库提供了两种用法,二进制和\SlamMysql\Mysql类。

从CLI

$ ./mysql -h
Usage: mysql [OPTIONS]
  --host       Connect to host     [Default: INI mysqli.default_host]
  --port       Port number         [Default: INI mysqli.default_port]
  --username   User for login      [Default: INI mysqli.default_user]
  --password   Password to use     [Default: INI mysqli.default_pw]
  --database   Database to use     [Default: empty]
  --socket     The socket file     [Default: INI mysqli.default_socket]

$ printf "CREATE DATABASE foobar;\nSHOW DATABASES;" | ./mysql
information_schema
foobar
mysql
performance_schema
sys

$ ./mysql --database foobar < foobar_huge_dump.sql

从PHP

$mysql = new \SlamMysql\Mysql('localhost', 'root', 'pwd', 'my_database', 3306, '/socket');
$return = $mysql->run(\STDIN, \STDOUT, \STDERR);
exit((int) (true !== $return));

\SlamMysql\Mysql::run接受任何可以被fgets/fwrite函数消费的资源类型。

相关项目

  1. ifsnop/mysqldump-php: 纯PHP中的mysqldump二进制端口