Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP Pthreads - menggunakan mysqli

Masalahnya adalah objek mysqli tidak cocok untuk digunakan di banyak utas, Anda ingin membuat instance MySQLi untuk setiap utas yang Anda mulai, sehingga setiap utas memiliki koneksi unik.

<?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();
?>

Hasil

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"
}

Perhatikan bahwa, objek MySQLi tidak pernah disimpan dalam lingkup objek Threads, karena Anda hanya boleh menyimpan dalam lingkup objek yang ingin Anda bagikan, dan karena Anda tidak dapat berbagi koneksi MySQLi, yang terbaik adalah memanipulasinya dalam lingkup metode. .

Ada banyak contoh di github, termasuk contoh SQLWorker, Anda harus membaca semuanya.

Bacaan lebih lanjut: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. Apakah ip2long() di PHP sama dengan fungsi INET_ATON() di MySQL?

  2. Pemodelan basis data untuk entitas yang lemah

  3. transaksi saya tidak dikembalikan ketika ada yang tidak beres di C# dengan mysql?

  4. Ukuran baris terlalu besar (> 8126) bisakah saya mengubah InnoDB ke MyISAM

  5. Pernyataan SQL untuk mendapatkan tanggal 2 hari ke depan dari sekarang