|
|
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Пользователь начинает загружать файл. Сразу же создается запись в БД (вариант создать запись после загрузки не катит). В процессе пользователь перезагружает браузер и обрывает загрузку. Нужно удалить созданную запись. Делаю так: Код: php 1. 2. 3. 4. 5. 6. 7. Не работает... Как будто скрипт останавливается при потере соединения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 10:06 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
В мануале написано всё. http://php.net/manual/en/features.connection-handling.php попробуйте зарегистрировать свою функцию с помощью register_shutdown_function() и в ней делайте уборку мусора в случае потери соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 10:51 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Пользователь начинает загружать файл. Сразу же создается запись в БД (вариант создать запись после загрузки не катит). В процессе пользователь перезагружает браузер и обрывает загрузку. Нужно удалить созданную запись. Делаю так: Код: php 1. 2. 3. 4. 5. 6. 7. Не работает... Как будто скрипт останавливается при потере соединения Как вариант создавать запись после успешной загрузки файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 10:53 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Сори, еще не проснулся :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 10:58 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Shitbox2, добавить поле в БД. статус. когда запись просто создается статус =0 когда файл успешно обработан статус меняется на 1. и тупо удалять все записи у которых статус==0 и время прошло напрмиер час. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 11:02 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Хм... Вот думаю как лучше... ignore_user_abort определяет настройки только того скрипта где вызвана или, вообще, всех скриптов? Так же прочитал, что нельзя установить было ли разорвано соединение, не отравив что-либо пользователю. А отправка левой инфы в планы совсем не входит... Если завершать скрипт, и запустить функцию обработки разрыва соединения, можно как-нибудь передать ей массив $_REQUEST завершенного скрипта? О сборке мусора тоже думал, но не пойдет, т.к. пользователь после перезагрузки сразу же увидит пустые элементы. Удалять их надо как можно быстрее, пока страница не успела перезагрузиться и JS не запросил список элементов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 14:14 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Хм... Вот думаю как лучше... ignore_user_abort определяет настройки только того скрипта где вызвана или, вообще, всех скриптов? Так же прочитал, что нельзя установить было ли разорвано соединение, не отравив что-либо пользователю. А отправка левой инфы в планы совсем не входит... Интересно читал))) я вот почему-то с того же источника вычитал: "в последующем, когда Ваш скрипт попробует вывести что-либо, PHP определит что соединение было разорвано и функция завершения будет вызвана". А что-либо вывести, как я понимаю, это означает обратиться (или как правильнее сказать...) к потоку для отправки инфы клиенту (если поток разрушен, значит клиент отрубился). А такая отправка происходит в двух случаях: если буферизация не включена, то при вызове любой echo, print и т.д., иначе по окончанию выполнения скрипта. Думаю по окончанию выполнения скрипт всёровно что-либо в поток да и отправит (или хотя бы проверит существует ли он). Так что функция завершения по окончанию выполнения будет вызвана полюбому. Думаю как-то так. Если не прав, поправьте пожалуйста, просто возможность интересная, раньше о такой не знал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 15:00 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
авторПользователь начинает загружать файл. Сразу же создается запись в БД (вариант создать запись после загрузки не катит). В процессе пользователь перезагружает браузер и обрывает загрузку. PHP начнет работать только ПОСЛЕ полной загрузки файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 16:04 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
авторв последующем, когда Ваш скрипт попробует вывести что-либо, это значит, что он уже получил все данные, а как правильно замечено ниже, скрипт начинает работать только после полной загрузки файла. И запустится ли он при обрыве соединения? Может быть просто будет считать, что файл передан частично? Ведь как-то же реализуют докачку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2012, 01:32 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Shitbox2это значит, что он уже получил все данные, а как правильно замечено ниже, скрипт начинает работать только после полной загрузки файла. И запустится ли он при обрыве соединения? Может быть просто будет считать, что файл передан частично? Ведь как-то же реализуют докачку блин вы меня удивляете. ну зачем гадать на кофейной гуще? зачем строить фантастические предположения, зачем не до конца читать доки???? там же все есть. 1) скрипт начинает работу после полной загрузки файла. если в процессе загрузки были ошибки - то они будут доступный в поле error в $_FILES 2) скрипт запускается только тогда! - когда его запросил(обратился) пользователь. он не имеет интеллекта и не может начать работать сам когда пожелает. все просто как три рубля: - пользователь посылает запрос на сервер - на сервере запускается скрипт обрабатывающий этот запрос - скрипт возвращает результат своей работы в браузер - пользователь получает этот результат в браузер 3) если вы внимательно прочитаете этидва пункта, то становится ясно как работает докачка. а именно: - пользователь посылает запрос на доступ к файлу, НО указывает не только его имя но и позицию(в байтах) начиная с которой он ему интересен. т.е. сама программа докачивающая файл получает его порциями и запрашивает его у сервера порциями. магии нет никакой. сказали что дайте файл номер один с 10-го по 150-й байт от начала - его и получили в ответ. общий смысл такой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2012, 06:23 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Видимо у нас разные доки( В моих (php.net) скромненько все... В общем, при обрыве связи скрипт точно не запустится, даже если прошел заголовок запроса. Понимаю, что так. С докачкой интересно, с какой стати клиент отдает ПХП-скрипту последующие куски файла по его запросу (ответу т.е.). Получается, что ПХП-скрипт может взять и любой файл закачать на сервер с пользовательского компьютера под видом продолжения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 16:40 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Видимо у нас разные доки( В моих (php.net) скромненько все... В общем, при обрыве связи скрипт точно не запустится, даже если прошел заголовок запроса. Понимаю, что так. С докачкой интересно, с какой стати клиент отдает ПХП-скрипту последующие куски файла по его запросу (ответу т.е.). Получается, что ПХП-скрипт может взять и любой файл закачать на сервер с пользовательского компьютера под видом продолжения. Бред какой-то. Что вы понимаете под докачкой файла? При загрузке файла от клиента к серверу через браузер он всегда отправляется полностью, если сам аплоад не реализован на уровне Blob API . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 17:58 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Тред не читал @ сразу отвечал. Обычно, для этого есть транзакции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 18:13 |
|
||
|
Что происходит с php-скриптом, если рвется соединение при загрузке файла?
|
|||
|---|---|---|---|
|
#18+
Докачка это когда заливаешь на сервер фильм, соединение вдруг оборвалось, а потом восстановилось, а файл продолжает закачиваться... Либо пользователь заливает его по второму разу и он закачивается не с нуля, а с того места на котором обрыв произошел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2012, 15:32 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38097420&tid=1464251]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 418ms |

| 0 / 0 |
