Я хочу организовать загрузку файлов на сервер по HTTP так, чтобы сервер впоследствии выложил эти файлы в локальный DC++. Таким образом мне необходимо обсчитать TTH файла. В PHP по умолчанию скрипт вызывается лишь после того, как запрос был полностью получен, а загруженный файл уже лежит в каталоге для временных файлов. Таким образом получается, что файл придется читать повторно, а пользователю придется ждать.
Существует ли метод обсчитывать хеш загружаемого файла на лету, не дожидаясь окончания загрузки?
С этого места поподробнее. Разве мне даст открыть listen-сокет на 80 порту для приема файла?
Кроме того, если я верно вас понял, это попахивает извращением, а именно — написанием простейшего веб-сервера на PHP.
Или я неправ?
Вы полностью правы:
Сокет, конечно, необходимо открывать на другом порту, но Вам ничто не мешает постить файлы на порт отличный от 80.
Да, это по сути простейший веб-сервер, но иначе никак.
Могу предложить 2 варианта — всё-таки использовать perl для приёма файла, или посмотреть как устроено pecl-расширение uploadprogress и шаманить на сях. Нормальных способов не знаю.
посмотри в сторону расширений, которые использовались для ajax загрузки файлов с прогресбаром, сейчас используется apc, но есть ещё что-то в pecl, погугли.
попропуй лучше pecl.php.net/package/uploadprogress
судя по коду расширения, там есть переменная в конфиге uploadprogress.get_contents, нужно выставить в true.