Как выполнить mysql запрос в php не дожидаясь его окончания?

Нужно выполнить запрос который длится довольно долго, результат запроса не важен. Нужно как нибудь запустить его параллельно либо запустить не дожидаясь результата…
  • Вопрос задан
  • 4838 просмотров
Пригласить эксперта
Ответы на вопрос 9
@shagguboy
Ответ написан
Комментировать
@gollum
Если это INSERT, то используйте INSERT DELAYED:
phpclub.ru/mysql/doc/insert-delayed.html
Ответ написан
Комментировать
@gollum
Также mysqlnd — MySQL native driver for PHP поддерживает асинхронные запросы.
www.php.net/manual/en/mysqli.poll.php
Ответ написан
Комментировать
@egorinsk
system('nohup script.php&') — что-то вроде этого, но это раюотает только в linux и создает лишнюю фоновую задачу нагрузку на БД.
Ответ написан
@MrCrock
Извращение конечно, но можно вынести его в отдельный скрипт, который будет дергаться cURL c временем ожидания ответа в 1 сек.
Ответ написан
Комментировать
Fastto
@Fastto
Используйте механизм очередей.

Смысл: когда вам нужно что-то выполнить «долгоиграющее» по определенным обстоятельствам или событиям, вы «помещаете в очередь на выполнение» определенную задачу. А сама очередь будет извлекать из стека задачи по одной и выполнять их. Это можно сделать например раз в минуту по крону специальным скриптом — крон-менеджером.

В качестве примера реализации можно посмотреть на таски симфони
Ответ написан
Комментировать
@Silver_Clash
Может имеется ввиду что после запуска долгоиграющего запроса нужно параллельно ему, не дожидаясь его результатов выполнять другие запросы?
Опишите структуру таблиц и тип запроса, это может быть важно для получения правильного ответа.
Ответ написан
shushu
@shushu
Если это DELETE то можно использовать DELETE LOW_PRIORITY…
Ответ написан
Комментировать
@aeryaguzov
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы