FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

sshilko/php-sql-mydb: PHP client for MySQL database · GitHub

MyDb - Component




Simple PHP client for MySQL database

Installation

composer require sshilko/php-sql-mydb
  • PHP 8.0, 8.1, 8.2
  • MySQL >=5.7.8, 8.0
  • MariaDB not compatible (TODO)

How this client helps you talk SQL to MySQL server

  • Make MySQL behave like a “traditional” SQL database system
  • Friendly transactions
  • Explicit timeouts
    • 05 seconds client-side connect-timeout
    • 89 seconds server-side SELECT query timeout
    • 90 seconds client-side read-timeout for any query
    • 7200 seconds non-interactive connection idle timeout
    • mysqlnd.net_read_timeout
    • respect client disconnect in php-fpm function.ignore-user-abort.php
  • Performance boost
    • increased MYSQLI_OPT_NET_READ_BUFFER_SIZE
    • increased MYSQLI_OPT_NET_CMD_BUFFER_SIZE
    • read-only InnoDB optimizations
    • READ COMMITED session transaction isolation level for readonly connections
    • async command execution
    • move mysql resultset to PHP userspace memory MYSQLI_STORE_RESULT_COPY_DATA
    • use of fetch_all from PHP Mysql native driver
  • UTF-8
    • utf8mb4 character set
    • UTC timezone
  • Quality error handling
    • PHP default error-reporting E_ALL & ~E_WARNING & ~E_NOTICE
    • MySQL default error-reporting MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_STRICT ^ MYSQLI_REPORT_INDEX
    • SIGTERM, SIGINT, SIGHUP signals trap
    • connection retry
  • PHPUnit & Static code analysis
    • unit-tested, static analysed codebase

What is the best use-case for this library

  • High performance, low-latency data-intensive applications
  • No prepared statements requirement
  • No 3rd party dependencies
  • No run-time/compile-time steps
  • Easy to start with and/or integrate into existing codebase

Out of scope

This library is not intending to become a framework, to keep focus and minimize codebase, it does not provide

please re-use existing solutions that best fit your requirements.

Why this library exists

  • MySQL database is fast, reliable and scalable, php runtime is the same
  • Value developers time and do not add complexity where possible
  • Measure app's performance with real-world datasets and organic load
  • Optimize for my use-case, focus on bottlenecks, remember that there is no NoSQL silver bullet
  • Do not optimize early - resources like CPU, memory are cheap
  • Focus on building architecture, learn from others and improve over time

Future roadmap

  • MariaDB compatibility layer (variables and init command syntax is different between mysql and mariadb)
  • MydbFactory responsible for initializing defaults

Contributing

Authors

Sergei Shilko contact@sshilko.com

About

PHP client for MySQL database

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages


Back | FazBrowse Home | New Git URL