powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Что происходит с php-скриптом, если рвется соединение при загрузке файла?
14 сообщений из 14, страница 1 из 1
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38092937
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь начинает загружать файл. Сразу же создается запись в БД (вариант создать запись после загрузки не катит).
В процессе пользователь перезагружает браузер и обрывает загрузку.
Нужно удалить созданную запись.

Делаю так:
Код: php
1.
2.
3.
4.
5.
6.
7.
$id = addToDB()

try {
   saveFile();
} catch(Exception $e) {
   deleteFromDB($id);
}


Не работает... Как будто скрипт останавливается при потере соединения
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38093016
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В мануале написано всё.

http://php.net/manual/en/features.connection-handling.php

попробуйте зарегистрировать свою функцию с помощью register_shutdown_function() и в ней делайте уборку мусора в случае потери соединения.
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38093019
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shitbox2Пользователь начинает загружать файл. Сразу же создается запись в БД (вариант создать запись после загрузки не катит).
В процессе пользователь перезагружает браузер и обрывает загрузку.
Нужно удалить созданную запись.

Делаю так:
Код: php
1.
2.
3.
4.
5.
6.
7.
$id = addToDB()

try {
   saveFile();
} catch(Exception $e) {
   deleteFromDB($id);
}


Не работает... Как будто скрипт останавливается при потере соединения

Как вариант создавать запись после успешной загрузки файла.
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38093030
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сори, еще не проснулся :)
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38093038
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2,

добавить поле в БД. статус. когда запись просто создается статус =0
когда файл успешно обработан статус меняется на 1.
и тупо удалять все записи у которых статус==0 и время прошло напрмиер час.
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38093412
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... Вот думаю как лучше... ignore_user_abort определяет настройки только того скрипта где вызвана или, вообще, всех скриптов? Так же прочитал, что нельзя установить было ли разорвано соединение, не отравив что-либо пользователю. А отправка левой инфы в планы совсем не входит...

Если завершать скрипт, и запустить функцию обработки разрыва соединения, можно как-нибудь передать ей массив $_REQUEST завершенного скрипта?

О сборке мусора тоже думал, но не пойдет, т.к. пользователь после перезагрузки сразу же увидит пустые элементы. Удалять их надо как можно быстрее, пока страница не успела перезагрузиться и JS не запросил список элементов
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38093540
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2Хм... Вот думаю как лучше... ignore_user_abort определяет настройки только того скрипта где вызвана или, вообще, всех скриптов? Так же прочитал, что нельзя установить было ли разорвано соединение, не отравив что-либо пользователю. А отправка левой инфы в планы совсем не входит...

Интересно читал))) я вот почему-то с того же источника вычитал: "в последующем, когда Ваш скрипт попробует вывести что-либо, PHP определит что соединение было разорвано и функция завершения будет вызвана".
А что-либо вывести, как я понимаю, это означает обратиться (или как правильнее сказать...) к потоку для отправки инфы клиенту (если поток разрушен, значит клиент отрубился). А такая отправка происходит в двух случаях: если буферизация не включена, то при вызове любой echo, print и т.д., иначе по окончанию выполнения скрипта.

Думаю по окончанию выполнения скрипт всёровно что-либо в поток да и отправит (или хотя бы проверит существует ли он). Так что функция завершения по окончанию выполнения будет вызвана полюбому.

Думаю как-то так. Если не прав, поправьте пожалуйста, просто возможность интересная, раньше о такой не знал :)
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38093693
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПользователь начинает загружать файл. Сразу же создается запись в БД (вариант создать запись после загрузки не катит).
В процессе пользователь перезагружает браузер и обрывает загрузку.

PHP начнет работать только ПОСЛЕ полной загрузки файла.
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38094312
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторв последующем, когда Ваш скрипт попробует вывести что-либо, это значит, что он уже получил все данные, а как правильно замечено ниже, скрипт начинает работать только после полной загрузки файла. И запустится ли он при обрыве соединения? Может быть просто будет считать, что файл передан частично? Ведь как-то же реализуют докачку
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38094351
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2это значит, что он уже получил все данные, а как правильно замечено ниже, скрипт начинает работать только после полной загрузки файла. И запустится ли он при обрыве соединения? Может быть просто будет считать, что файл передан частично? Ведь как-то же реализуют докачку
блин вы меня удивляете. ну зачем гадать на кофейной гуще? зачем строить фантастические предположения, зачем не до конца читать доки???? там же все есть.

1) скрипт начинает работу после полной загрузки файла. если в процессе загрузки были ошибки - то они будут доступный в поле error в $_FILES
2) скрипт запускается только тогда! - когда его запросил(обратился) пользователь. он не имеет интеллекта и не может начать работать сам когда пожелает. все просто как три рубля:
- пользователь посылает запрос на сервер
- на сервере запускается скрипт обрабатывающий этот запрос
- скрипт возвращает результат своей работы в браузер
- пользователь получает этот результат в браузер
3) если вы внимательно прочитаете этидва пункта, то становится ясно как работает докачка. а именно:
- пользователь посылает запрос на доступ к файлу, НО указывает не только его имя но и позицию(в байтах) начиная с которой он ему интересен. т.е. сама программа докачивающая файл получает его порциями и запрашивает его у сервера порциями. магии нет никакой. сказали что дайте файл номер один с 10-го по 150-й байт от начала - его и получили в ответ. общий смысл такой.
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38097357
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо у нас разные доки( В моих (php.net) скромненько все... В общем, при обрыве связи скрипт точно не запустится, даже если прошел заголовок запроса. Понимаю, что так.
С докачкой интересно, с какой стати клиент отдает ПХП-скрипту последующие куски файла по его запросу (ответу т.е.). Получается, что ПХП-скрипт может взять и любой файл закачать на сервер с пользовательского компьютера под видом продолжения.
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38097420
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shitbox2Видимо у нас разные доки( В моих (php.net) скромненько все... В общем, при обрыве связи скрипт точно не запустится, даже если прошел заголовок запроса. Понимаю, что так.
С докачкой интересно, с какой стати клиент отдает ПХП-скрипту последующие куски файла по его запросу (ответу т.е.). Получается, что ПХП-скрипт может взять и любой файл закачать на сервер с пользовательского компьютера под видом продолжения.
Бред какой-то. Что вы понимаете под докачкой файла? При загрузке файла от клиента к серверу через браузер он всегда отправляется полностью, если сам аплоад не реализован на уровне Blob API .
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38097431
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тред не читал @ сразу отвечал.
Обычно, для этого есть транзакции...
...
Рейтинг: 0 / 0
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
    #38097706
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докачка это когда заливаешь на сервер фильм, соединение вдруг оборвалось, а потом восстановилось, а файл продолжает закачиваться... Либо пользователь заливает его по второму разу и он закачивается не с нуля, а с того места на котором обрыв произошел
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Что происходит с php-скриптом, если рвется соединение при загрузке файла?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]