|
|
|
| Доводится перекачивать файлы между серверами через сокеты. При большом размере файла страница надолго виснет - и не понятно, толи всё ок, толи ошибка (по умолчанию все ошибки скрипта давятся). Так вот, возможно ли отследить процесс копирования файла в сокет? Как я понимаю одним скриптом выполнить не реально, надо запустить параллельно ещё один, который сможет "смотреть" сколько "пролетело". Можно ещё просто замерить тестовую скорость соединения и время загрузки тестовго файла, тем самым определить приблезительное время загрузки файла которое будет отображаться, но уж больно мудрёно и не точно. Может есть какие другие возможности и идеи? | |
|
|
|
|
|
|
|
для: Director_Of_Zoo
(25.05.2006 в 19:06)
| | Может есть какие другие возможности и идеи?
Можете использовать cURL. Если произошла ошибка при передаче данных, функции curl_errno() и curl_error() всё расскажут и покажут. | |
|
|
|
|
|
|
|
для: Саня
(25.05.2006 в 21:44)
| | Отвечу на вопрос сам, т.к. нашёл приемлемое решение без использования курла (хотя буду делать алтернативный вариант с курлом)....
Заливаемый файл разбиваю на несколько частей, определённого размера..., например
$chunkSize = ($fileSize > 1024*1024*5) ? round($fileSize / 777) : round($fileSize / 222);
|
Затем в цикле отправляю одну за другой, при этом на каждом шаге вычисляю время, считаю скока залил, процент заливки и выважу всё в javascript:
echo "<script>pr(".$percent.", '".$totalsend."', ".$speed.")</script>\r\n";
|
где функция pr была определена ранее в ява скрипте и играющая роль простого изменения значений, например можно ширину блока див определённого цвета менять путём умножения на процент или:
document.getElementById("speed").innerHTML = '<b>' + speed + ' KB/s</b>';
|
Эти скрипты "нормальным" браузером не отображаются, и не портят таблицы и блоки.
Вообщем решение как всегда гениально просто... | |
|
|
|