db-ping verifies a database server is responding by executing a query in a timed loop.
Optionally includes slave replication checks.
PHP 5.6+ console command that uses PDO to provide the database drivers:
- MySQL
- ODBC (i.e. Microsoft SQL Server ...)
The project is considered in a usable state and feature complete.
This project is used in corporate applications. As such, the authors are unlikely to update it on a regular basis, but instead when the corporate applications that use it run into problems. You should expect updates in the 5-10yr range.
Issues and PRs will be monitored, and we will continue to work with the community to provide updates as they are contributed.
Before proceeding, you need a working PHP 5.6+ installation.
The recommended way to install db-ping is by downloading the phar.
See Releases for downloads.
Next, run the phar from the command line:
php db-ping.phar help
php db-ping.phar mysql --pass=mysecretpassword
php db-ping.phar ODBC -d OdbcName -u user -p password
If there is no mysql server running locally, pinging will give a connection refused
error as below
$ php bin/db-ping mysql
DB-PING 127.0.0.1:3306
from 127.0.0.1:3306: connection refused. delay=2000ms, exec=0ms, since success=0s, since fail=0s
from 127.0.0.1:3306: connection refused. delay=2000ms, exec=0ms, since success=0s, since fail=2.0006s
Launch a temporary mysql server:
docker run --name some-mysql --rm -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -p 3306:3306 mysql
Wait a few seconds while it initializes, then open another terminal and ping it:
$ php bin/db-ping mysql -u user -p pass
DB-PING 127.0.0.1:3306
from 127.0.0.1:3306: connected. delay=2000ms, exec=0ms, since success=0s, since fail=0s
from 127.0.0.1:3306: check passed. delay=2000ms, exec=0ms, since success=0s, since fail=0s
from 127.0.0.1:3306: check passed. delay=2000ms, exec=0ms, since success=2.0022s, since fail=0s
from 127.0.0.1:3306: check passed. delay=2000ms, exec=0ms, since success=4.0028s, since fail=0s
To stop the dockerfile: docker stop some-mysql
- Set up your php server for ODBC
- Add the server you'd like to test against to the
/etc/odbc.ini
file (on linux) - Ping it
$ php bin/db-ping ODBC -d MarketflowAcc -u rou -p rou
DB-PING odbc:MarketflowAcc
from odbc:MarketflowAcc: connected. delay=2000ms, exec=0ms, since success=0s, since fail=0s
from odbc:MarketflowAcc: check passed. delay=2000ms, exec=0ms, since success=0s, since fail=0s
from odbc:MarketflowAcc: check passed. delay=2000ms, exec=0ms, since success=2.0058s, since fail=0s
from odbc:MarketflowAcc: check passed. delay=2000ms, exec=0ms, since success=4.0071s, since fail=0s
from odbc:MarketflowAcc: check passed. delay=2000ms, exec=0ms, since success=6.0083s, since fail=0s
The ping SQL query can be repeated more than once per ping with the repeat
option. This is useful to make the ping test more stressful:
$ php bin/db-ping ODBC -d MarketflowAcc -u rou -p rou --repeat 100
The output format can be controlled with the format
option:
$ php bin/db-ping ODBC -d MarketflowAcc -u rou -p rou --repeat 100 --format te
DB-PING odbc:MarketflowAcc
2017-01-11 14:55:35, 0
2017-01-11 14:55:35, 3
2017-01-11 14:55:37, 3
2017-01-11 14:55:39, 3
2017-01-11 14:55:41, 3
Also, et
instead of te
would shuffle the order
Run vbin/phing check
This software is distributed under the MIT License. Please see License file for more information.