Zend Framework: дождитесь завершения запроса, прежде чем запускать другой - PullRequest
0 голосов
/ 22 сентября 2010

В веб-приложении, которое я создал в Zend Framework, я создаю новую базу данных для каждого нового клиента, который регистрируется. Этот запрос, конечно, довольно тяжелый и занимает много времени, так как нам нужно создать базу данных, создать около 10 таблиц и поместить некоторые данные в таблицы.

Мы используем один большой файл SQL, который мы читаем, и exec ().

После этих запросов с другим подключением mysql в ZF мне нужно вставить новую запись в одну из таблиц, созданных на предыдущем шаге.

Вот где он терпит неудачу: когда первый запрос еще не завершен, и я пытаюсь вставить данные в создаваемые таблицы, я получаю сообщение об ошибке «таблица xxxx не существует».

Все это происходит за доли секунды, но я не могу найти способ «дождаться» завершения первого большого запроса.

добавление команды sleep (2) до того, как второе выражение решило эту проблему, но на самом деле это не тот способ, которым мы хотим играть.

Кроме того, мы не можем использовать транзакцию, поскольку мы используем CREATE DATABASE и другие операторы, которые нельзя использовать с транзакциями.

1 Ответ

3 голосов
/ 22 сентября 2010

Одна база данных на клиента - это червь, который вы почти наверняка захотите устранить, прежде чем он выйдет из-под контроля. Используйте одну базу данных с полем client_id в каждой таблице, чтобы указать, какому клиенту принадлежит запись. (Это подразумевает добавление новой таблицы для хранения самих записей клиента.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...