Pool.php 588 B

1234567891011121314151617181920212223242526272829
  1. <?php
  2. use Swow\Channel;
  3. class Pool
  4. {
  5. protected static Channel $channel;
  6. public function __construct($dsn, $username, $password, $size)
  7. {
  8. static::$channel = new Channel($size);
  9. for ($i = 0; $i < $size; $i++) {
  10. static::$channel->push(new PDO($dsn, $username, $password,[
  11. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  12. ]));
  13. }
  14. }
  15. public function get(): PDO
  16. {
  17. return static::$channel->pop();
  18. }
  19. public function put(PDO $pdo)
  20. {
  21. return static::$channel->push($pdo);
  22. }
  23. }