Мне нужно вставить некоторые значения в базу данных из моего php-кода. Но время выполнения скрипта очень дорого, поэтому я должен как можно быстрее завершить свой скрипт. Поэтому мне просто нужно «сказать» мой скрипт, чтобы вставлять значения в базу данных, и мне все равно, сколько времени ему понадобится. Похоже, я могу использовать cURL
для отправки команды в файл *.php
, который сделает вставку, но является ли это лучшим и действенным способом?PHP Вставка в базу данных без ожидания ответа на базу данных
ответ
Вы можете пользователем команды INSERT DELAYED
, если установка позволяет
Когда клиент использует INSERT DELAYED, он получает в порядке с сервера на один раз, а строка находится в очереди, чтобы быть вставлены, когда таблица не используется в использование любым другим потоком.
Я использую базу данных 'sybase iq' – Daria
Вы вопросы звучит немного, как вы собираетесь, чтобы попытаться сделать 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. (так как вы не представили много деталей, и это действительно широкая тема, я оставляю детали о том, как это сделать. Ключевое слово будет чем-то вроде иностранных баз данных в сочетании с заданиями базы данных)
Используйте очередь заданий и работников. Например. начать с изучения Gearman или аналогичных систем. – deceze