Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHP Pthreads - sử dụng mysqli

Vấn đề là đối tượng mysqli không phù hợp để sử dụng trong nhiều luồng, bạn muốn tạo một phiên bản của MySQLi cho mỗi luồng bạn bắt đầu, vì vậy mỗi luồng có một kết nối duy nhất.

<?php
define("SQLHOST", "localhost");
define("SQLUSER", "root");
define("SQLPASS", "");
define("SQLDB",   "test");
define("SQLPORT", 3306);
define("SQLSOCK", "/var/lib/mysql/mysql.sock");

class Mine extends Thread {
    public function run() {
        try {
            $my = new mysqli(SQLHOST, SQLUSER, SQLPASS, SQLDB, SQLPORT, SQLSOCK);
            if ($my) {
                $result = $my->query("SHOW DATABASES;");

                if (is_object($result)) {
                    while (($row = $result->fetch_assoc())) {
                        var_dump($row);
                    }
                }
            }
        } catch(Exception $ex) {
            var_dump($ex);
        }
    }
}

$mine = new Mine();
$mine->start();
?>

Lợi nhuận

array(1) {
  ["Database"]=>
  string(18) "information_schema"
}
array(1) {
  ["Database"]=>
  string(5) "mysql"
}
array(1) {
  ["Database"]=>
  string(18) "performance_schema"
}
array(1) {
  ["Database"]=>
  string(4) "test"
}

Lưu ý rằng, đối tượng MySQLi không bao giờ được lưu trữ trong phạm vi đối tượng Threads, vì bạn chỉ nên lưu trữ trong phạm vi đối tượng mà bạn định chia sẻ và vì bạn không thể chia sẻ kết nối MySQLi, nên tốt nhất là thao tác nó trong phạm vi phương thức .

Có rất nhiều ví dụ trên github, bao gồm cả ví dụ về SQLWorker, bạn nên đọc hết chúng.

Đọc thêm: https://gist.github.com/krakjoe/6437782




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL truy xuất bản ghi mới nhất cho Nhóm

  2. PDO - lastInsertId () để chèn truy vấn với nhiều hàng

  3. MySQL:Chèn vào nhiều bảng trong cùng một truy vấn với BEGIN &COMMIT

  4. Đổi tên cơ sở dữ liệu MySQL

  5. Các phương pháp hay nhất để lưu trữ thông tin ngân hàng trong cơ sở dữ liệu