Прерывание загрузки данных MySQL

182
12 мая 2019, 03:00

как можно реализовать прерывание загрузки данных в базу MySQL по требованию пользователя (кнопка отмены загрузки) в php?

можно ли это вообще реализовать без разрыва соединения? в гугле не нашел подобного.

Answer 1

Я думаю со стороны пользователя это не возможно. Со стороны сервера обратите внимание на две переменные конфигурации - max_execution_time, max_file_upload - пишу по памяти, наверняка с ошибкой. Первая ограичит время выполнения скрипта, вторая величену максимальную для аплоада- загрузки.

Пока писал, придумал как это можно сделать. Разбейте sql на несколько запросов. Запускайте их по одному, каждый раз проверяя что пользователь не отменил загрузку. Отменять пользователь будет кнопкой, которая запускаяет аякс, и при получении такого запроса, на стороне сервера устанавливается сессионая переменная.
Скрипт который запускает запросы проверяет после каждого установленна ли эта переменная, для того чтоб обнаружить ее вовремя вероятно необходимо закрыть и снова открыть сессию.

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

Answer 2

сделал так:

  1. создал таблицу с полями cancel и status

  2. вызываю метод запускающий консольное приложение через exec (cd basedir && php controller/init), который запускает метод загрузки json.

  3. метод загрузки записывает в таблицу (в запись с id == 1) cancel = 1 и status = 1, при переборе элементов делается проверка cancel, и если он != 1 возвращаю делаю return.

  4. кнопка отмена вызывает метод cancel, который ставит $model->cancel = 0 и status = 0.

  5. status нужен только для проверки состояния загрузки, т.е. 0 - ожидание, 1 - идет загрузка, 2 - завершено.

READ ALSO
MicroBilt, обмен сообщениями по протоколу SOAP

MicroBilt, обмен сообщениями по протоколу SOAP

Подскажите пожкак правильно передать xml файл в soap запросом

163
Как реализовать вычитание времени? [закрыт]

Как реализовать вычитание времени? [закрыт]

Как реализовать вычитание времени, скажем в 21:20 будет проводиться мероприятие а чтоб активировать ссылку в 20:45, ну чтоб два раза не писать...

158
Замыкание PHP возвращает объект

Замыкание PHP возвращает объект

Почему при использовании анонимной функции я не получаю true/false, как ожидаю, а вместо этого получаю объект класса Closure?

146
Заголовок php запросов

Заголовок php запросов

Ребята очень нужна помощьСдают нервы

143