Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Статус копированиямежду хостингами
 
 автор: Director_Of_Zoo   (25.05.2006 в 19:06)   письмо автору
 
 

Доводится перекачивать файлы между серверами через сокеты. При большом размере файла страница надолго виснет - и не понятно, толи всё ок, толи ошибка (по умолчанию все ошибки скрипта давятся). Так вот, возможно ли отследить процесс копирования файла в сокет? Как я понимаю одним скриптом выполнить не реально, надо запустить параллельно ещё один, который сможет "смотреть" сколько "пролетело". Можно ещё просто замерить тестовую скорость соединения и время загрузки тестовго файла, тем самым определить приблезительное время загрузки файла которое будет отображаться, но уж больно мудрёно и не точно. Может есть какие другие возможности и идеи?

   
 
 автор: Саня   (25.05.2006 в 21:44)   письмо автору
 
   для: Director_Of_Zoo   (25.05.2006 в 19:06)
 

Может есть какие другие возможности и идеи?
Можете использовать cURL. Если произошла ошибка при передаче данных, функции curl_errno() и curl_error() всё расскажут и покажут.

   
 
 автор: Director_Of_Zoo   (02.06.2006 в 17:21)   письмо автору
 
   для: Саня   (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>'; 

Эти скрипты "нормальным" браузером не отображаются, и не портят таблицы и блоки.
Вообщем решение как всегда гениально просто...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования