Как сохранить постоянное соединение http в php? - PullRequest
0 голосов
/ 21 октября 2010

У меня есть небольшой веб-интерфейс, который загружает файл на сервер и затем выгружает этот файл в oracle db. но в нем около 7 миллионов записей, и веб-сервер получает время на чтение и выгрузку этого файла. Может кто-нибудь, пожалуйста, скажите мне, как я могу поддержать этот сеанс, чтобы он не получал тайм-аут при загрузке, чтении и дампе данных в БД?

ребята, я говорю о времени, которое потребуется, когда пользователь загрузит файл, и он будет выгружен в БД ... сейчас 7 миллионов записей огромны, и веб-сервер определенно истечет. ... и если время оракула истекло, то что делать ..... я знаю, что это сбивает с толку, но я не хочу, чтобы пользователь знал, что его файл не выгружается в БД ... асинхронный механизм не опция в этом случае ... я сейчас использую apache

пока что это простой скрипт, мало html-объектов и php. и я должен сделать это в php ... =)

в ожидании вашего ценного ответа. спасибо

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Чтобы скрипт продолжал работать, поместите этот код в начало файла php. Я думаю, что это работает, только если вы делаете прямой вызов в файл. Я имею в виду, я не думаю, что работает, если файл php включает.

set_time_limit(0);
header('Connection: close');
ignore_user_abort();

Отсюда: http://php.oregonstate.edu/manual/en/features.connection-handling.php

Надеюсь, это поможет, Исмаэль.

0 голосов
/ 21 октября 2010

Не существует такой вещи, как «постоянное соединение http»

как мне сохранить этот сеанс живым

HTTP не имеет состояния, поэтому управление сессиями не реализуется протоколом, а также не имеет отношения к описываемой вами проблеме.

и время ожидания веб-сервера

Может быть, если бы вы сказали нам, какой это веб-сервер, мы могли бы предложить способы манипулирования временем ожидания.

Кроме того, вы не говорите, почему вы считаете, что проблема заключается в тайм-ауте, а не в том, что что-то не так (например, ограничение размера файла), и вы не различали загрузку и последующую загрузку данных как точку, в которой происходит сбой сценария .

.... но правильным способом решения этой проблемы будет запуск отдельного независимого процесса для выполнения загрузки данных после загрузки файла. Поищите в Google «Долгосрочный php-процесс setsid»

...