как можно реализовать прерывание загрузки данных в базу MySQL по требованию пользователя (кнопка отмены загрузки) в php?
можно ли это вообще реализовать без разрыва соединения? в гугле не нашел подобного.
Я думаю со стороны пользователя это не возможно. Со стороны сервера обратите внимание на две переменные конфигурации - max_execution_time, max_file_upload - пишу по памяти, наверняка с ошибкой. Первая ограичит время выполнения скрипта, вторая величену максимальную для аплоада- загрузки.
Пока писал, придумал как это можно сделать. Разбейте sql на несколько запросов. Запускайте их по одному, каждый раз проверяя что пользователь не отменил загрузку. Отменять пользователь будет кнопкой, которая запускаяет аякс, и при получении такого запроса, на стороне сервера устанавливается сессионая переменная.
Скрипт который запускает запросы проверяет после каждого установленна ли эта переменная, для того чтоб обнаружить ее вовремя вероятно необходимо закрыть и снова открыть сессию.
Оберните запросы в транзакцию, если не хотите чтоб данные частично загрузились, а только полностью или никак.
сделал так:
создал таблицу с полями cancel
и status
вызываю метод запускающий консольное приложение через exec
(cd basedir && php controller/init), который запускает метод загрузки json.
метод загрузки записывает в таблицу (в запись с id == 1
) cancel = 1
и status = 1
, при переборе элементов делается проверка cancel
, и если он != 1
возвращаю делаю return
.
кнопка отмена
вызывает метод cancel
, который ставит $model->cancel = 0
и status = 0
.
status
нужен только для проверки состояния загрузки, т.е. 0 - ожидание, 1 - идет загрузка, 2 - завершено.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Подскажите пожкак правильно передать xml файл в soap запросом
Как реализовать вычитание времени, скажем в 21:20 будет проводиться мероприятие а чтоб активировать ссылку в 20:45, ну чтоб два раза не писать...
Почему при использовании анонимной функции я не получаю true/false, как ожидаю, а вместо этого получаю объект класса Closure?