2010-09-22 33 views
0

在我在zend框架中創建的Web應用程序中,我爲每個註冊的新客戶端創建一個新的數據庫。由於我們需要創建一個數據庫,創建大約10個表並在表中放入一些數據,所以這個查詢當然是相當繁重和耗時的。zend框架:在開始另一個之前等待查詢完成

我們正在使用我們讀入的一個大型SQL文件和exec()。

這些查詢後,在ZF另一個MySQL連接,我需要在已經在上一步中創建一個表中插入一個新的記錄。

這是失敗的地方:當第一個查詢還沒有完成時,我嘗試在正在創建的表上插入數據,我得到一個錯誤「table xxxx does not exist」。

所有這些都發生在幾分之一秒內,但我找不到第一個大型查詢「完成」的方法。

在第二條語句解決了這個問題之前先進行睡眠(2)命令,但這不是我們想要玩的方式。

另外,我們不能使用事務,因爲我們使用的是CREATE DATABASE和其他不能用於事務的語句。

回答

3

每個客戶端一個數據庫就是一堆蠕蟲,在蠕蟲失控之前,您幾乎可以肯定地想消除這些蠕蟲。在每個表中使用帶有client_id字段的單個數據庫來指示記錄屬於哪個客戶端。 (這意味着增加了一個新的表來保存客戶記錄本身。)

+0

我們在想到這個,我們需要爲我們的客戶不同的數據庫不僅是數據安全的一個額外層,而且確保我們可以以每個用戶爲基礎輕鬆恢復備份。 – Jorre 2010-09-22 19:31:44

+0

我會再次發表評論,每個客戶端的新表格聽起來像是一場災難。這就是說,睡覺(2)可能是你誠實的最好的選擇。 – 2010-09-23 03:13:29

+0

你能否澄清爲什麼每個客戶端的新數據庫是災難的祕訣? – Jorre 2010-09-23 08:04:43

相關問題