2011-08-25 24 views
6

4 çekirdek ve PHP çalıştıran bir web sunucusu ile tek bir veritabanı sunucum var. Veritabanı sunucusuna, her bir mysqld işleminde bir tane olmak üzere, veritabanı sunucusunda paralel olarak yürütecekleri bir PHP betiği isteyebilirim.PHP, bir Apache ortamında çoklu işlenmiş mysql sorguları verebilir mi?

$sql = new mysqli([insert connection parameters]); 
$sql->query("SELECT 'Complex Query A'"); 
$sql->query("SELECT 'Complex Query B'"); 
$sql->query("SELECT 'Complex Query C'"); 
$sql->query("SELECT 'Complex Query D'"); 

Fakat bu seri çalıştırmak ve sadece bir Mysqld sürecini kullanmaktadır: Genellikle PHP bunu. Bu uygulamada, her sorgu (A'dan D'ye) verilerin farklı bir kısmını işliyor, ancak aynı InnoDB tabloları üzerinde çalışıyor.

Olası bir çözüm AJAX kudreti paralel olarak çalıştırmak, ancak Apaçi olanlar ajax işleyecek olduğunu tahmin ediyorum sıralı Her müşteri için bir httpd süreci ile çağrıları alt komut içine yıkmak için apache çağrıları yapmaktır.

Bunu başarmanın bir yolu var mı? Mysqlnd MYSQLI_ASYNC özelliklerine sahip olan var mı? Tek bir veritabanı sunucusu ve mysqli bağlantısıyla paralel çalışabilirler mi?

Amaç: grafikler oluşturan gerçek zamanlı analitik araçları çalıştırıyoruz ve zaman alan sorguları hızlandırmak için veritabanımızdaki işlem gücünün avantajlarından yararlanmak istiyorum.

cevap

6

Gereksinim duyduğunuz şey eşzamansız sorgu yürütmesidir. Yeni mysqlnd sürücüsüne sahip olduğunuzda PHP 5.3 ile başlayabilirsiniz - MYSQLI_ASYNC bayrağını query() yöntemine geçirebilirsiniz. Komut dosyasının çalışması, sorgunuzun bitmesini beklemeden devam edecek. poll() method için yorumlarda PHP kullanım kılavuzunda güzel bir kullanım örneği var.

Paralel olarak yürütmek istediğiniz her sorgu için ayrı bir MySQL bağlantısına ihtiyacınız olacaktır.

+0

Sorduğum soruya da şunu önerdim, ancak tek bir bağlantı kullanıldığında bunun çalıştığından emin misiniz? Bu iki veya daha fazla farklı sunucuya birden çok bağlantı gerektirmiyor mu? – Toxikman

+0

Evet, her sorgu için bir tane birden çok bağlantı gerektirir. Örnek olan mysqli_poll() 'docs 'a bir link ekledim. – Crack

İlgili konular