https://github.com/ofbeaton/db-ping
Verify a Database server is responding.
https://github.com/ofbeaton/db-ping
mysql-server odbc php ping sql-server
Last synced: 4 months ago
JSON representation
Verify a Database server is responding.
- Host: GitHub
- URL: https://github.com/ofbeaton/db-ping
- Owner: ofbeaton
- License: mit
- Created: 2016-08-04T04:30:26.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2019-03-17T18:48:57.000Z (about 7 years ago)
- Last Synced: 2024-12-04T22:46:08.872Z (over 1 year ago)
- Topics: mysql-server, odbc, php, ping, sql-server
- Language: PHP
- Homepage:
- Size: 47.9 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# db-ping
db-ping verifies a database server is responding by executing a query in a timed loop.
[](https://packagist.org/packages/ofbeaton/db-ping)
[](https://php.net/)
[](https://travis-ci.org/ofbeaton/db-ping)
Optionally includes slave replication checks.
PHP 5.6+ console command that uses PDO to provide the database drivers:
- [x] MySQL
- [x] ODBC (i.e. Microsoft SQL Server ...)
## Updates
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.
## Installing via phar
Before proceeding, you need a working PHP 5.6+ installation.
The recommended way to install db-ping is by downloading the phar.
See [Releases](https://github.com/ofbeaton/db-ping/releases) for downloads.
Next, run the phar from the command line:
```bash
php db-ping.phar help
php db-ping.phar mysql --pass=mysecretpassword
php db-ping.phar ODBC -d OdbcName -u user -p password
```
## Testing
### Smoke test
If there is no mysql server running locally, pinging will give a `connection refused` error as below
```bash
$ 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
```
### Against a real MySql server
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:
```bash
$ 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`
### Against a real database server via ODBC
1. Set up your php server for [ODBC](http://php.net/manual/en/ref.pdo-odbc.php)
2. Add the server you'd like to test against to the `/etc/odbc.ini` file (on linux)
3. Ping it
```bash
$ 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:
```bash
$ php bin/db-ping ODBC -d MarketflowAcc -u rou -p rou --repeat 100
```
The output format can be controlled with the `format` option:
```bash
$ 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
### Unit tests
Run `vbin/phing check`
## License
This software is distributed under the MIT License. Please see [License file](LICENSE) for more information.