2015-09-09 2 views
2

Мне нужно вставить некоторые значения в базу данных из моего php-кода. Но время выполнения скрипта очень дорого, поэтому я должен как можно быстрее завершить свой скрипт. Поэтому мне просто нужно «сказать» мой скрипт, чтобы вставлять значения в базу данных, и мне все равно, сколько времени ему понадобится. Похоже, я могу использовать cURL для отправки команды в файл *.php, который сделает вставку, но является ли это лучшим и действенным способом?PHP Вставка в базу данных без ожидания ответа на базу данных

+2

Используйте очередь заданий и работников. Например. начать с изучения Gearman или аналогичных систем. – deceze

ответ

0

Вы можете пользователем команды INSERT DELAYED, если установка позволяет

Когда клиент использует INSERT DELAYED, он получает в порядке с сервера на один раз, а строка находится в очереди, чтобы быть вставлены, когда таблица не используется в использование любым другим потоком.

http://dev.mysql.com/doc/refman/5.6/en/insert-delayed.html

+0

Я использую базу данных 'sybase iq' – Daria

1

Вы вопросы звучит немного, как вы собираетесь, чтобы попытаться сделать OLTP с IQ. Не то, для чего был разработан IQ, но есть способ, возможно, решение для вашего:

Поскольку IQ - это хранилище столбцов с большим количеством ввода-вывода, когда дело доходит до операторов записи/обновления (медленное на INSERTS (ОБНОВЛЕНИЯ), они внедрили дополнительную функцию управления версиями на уровне строк, называемую RLV с IQ16 (помните, что хранилище столбцов обновляет полный столбец после обновления поля). Это позволяет вам изменять одиночные строки, не ожидая ввода IQ обратно в полный столбец. После таймаута или нескольких изменений IQ автоматически синхронизирует изменения в хранилище столбцов. В SELECT-операторах результаты хранилища столбцов объединяются с изменениями, хранящимися внутри RLV. Таким образом, он полностью прозрачен для вашего приложения кроме, может быть, нескольких новых кодов ошибок;) Даже это работает, это сказано: это своего рода (крутая) работа вокруг, так что не сделает IQ для вашей базы данных OLTP - IQ хранит базу данных OLAP, необходимую для сообщения о проблемах, но она помогает вам быстрее изменять некоторые данные. Тем не менее, вы должны начать проверку RLV documentation, так как это будет огромным, чтобы вставить все в этот ответ.

Вторым способом может быть установка второй базы данных перед IQ, которая выполняет всю работу OLTP для IQ и синхронизацию с IQ позже на обычной базе. Это работает только хорошо, если вам просто нужно небольшое количество данных внутри вашей базы данных OLTP. Однако эта идея схожа с тем, что делает RLV, но DIY и работает с IQ < 16. (так как вы не представили много деталей, и это действительно широкая тема, я оставляю детали о том, как это сделать. Ключевое слово будет чем-то вроде иностранных баз данных в сочетании с заданиями базы данных)