Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть функция, которая пересылает файл с сервера клиенту. Работает очень хорошо, но на маленьких файлах. Если попробовать переслать файлик размером 100МБ, то все будет висеть очень долго. Есть ли какая нибудь альтернатива этой процедуре или как можно ускорить обработку файла? Спасибо заранее. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2008, 16:24 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
Скорее всего plperlu и все процедура тут ни при чем, т.к. раньше тоже пробовал сохранять данные в bytea а потом доставать их с помощью ZEOS (DELPHI) - метод другой а скорость очень низкая. А что именно создает такую нагрузку ? Возможно горомное количество маленьких I/O Если данные передаются через PostgreSQL, стало быть буфер очень маленький, а увеличивать еще не было смысла ... Проблему решил методом прокидки файла на клиент через FTP (благо, условия безопасности позволяют) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 01:00 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
а если через large objects ? может быть быстрее будет. на сервере под админом, создаём функцию что бы обычный пользователь мог загружать файлы в базу, допустим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. files_cache например так: Код: plaintext теперь клиент через Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. выгружать сразу всё в локальный файл через lo_export необязательно, lo предоставляет интерфейс похожий на файловый: открытие, позиционирование, чтение блока, запись блока, закрытие. работа с lo_ должна производиться внутри транзакции. ps: у меня так отчёты работают, в качестве ключа я использую md5 сумму шаблона отчёта с данными. описание клиентских функций из libpq -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 01:22 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
выгода здесь может быть в том, что, насколько я понимаю, large objects НЕ конвертируются в текстовое представление (типа Вашего $substr = sprintf("%03o",$v); $ret .= "\\".$substr;) при работе с ними, соответственно имхо должно быть быстрее. -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 01:26 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
В очередной раз, Ёш большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 02:35 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
Garik888Всем привет. Есть функция, которая пересылает файл с сервера клиенту. Работает очень хорошо, но на маленьких файлах. Если попробовать переслать файлик размером 100МБ, то все будет висеть очень долго. Есть ли какая нибудь альтернатива этой процедуре или как можно ускорить обработку файла? Спасибо заранее. Как вы вызываете эту функцию ? Я надеюсь вы не читаете за один раз все 100 Мб ? Могу предположить, что одной из причин медленной работы может быть Код: plaintext Если будете использовать метод Ёш , напишите, насколько стало быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 15:48 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
Ёша если через large objects ? может быть быстрее будет. на сервере под админом, создаём функцию что бы обычный пользователь мог загружать файлы в базу, допустим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. files_cache например так: Код: plaintext теперь клиент через Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. выгружать сразу всё в локальный файл через lo_export необязательно, lo предоставляет интерфейс похожий на файловый: открытие, позиционирование, чтение блока, запись блока, закрытие. работа с lo_ должна производиться внутри транзакции. ps: у меня так отчёты работают, в качестве ключа я использую md5 сумму шаблона отчёта с данными. описание клиентских функций из libpq -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери Но ведь в этом варианте файл храниться в базе, а как сделать что бы файл лежал в файловой системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 17:14 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
Ёш Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. выгружать сразу всё в локальный файл через lo_export необязательно, lo предоставляет интерфейс похожий на файловый: открытие, позиционирование, чтение блока, запись блока, закрытие. работа с lo_ должна производиться внутри транзакции. ps: у меня так отчёты работают, в качестве ключа я использую md5 сумму шаблона отчёта с данными. описание клиентских функций из libpq -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери Что то смутно как то на php, ничего не понятно. Нет ли примера на Delphi с использованием Zeos компонента?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 17:17 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
Garik888 ..... Что то смутно как то на php, ничего не понятно. Нет ли примера на Delphi с использованием Zeos компонента?? так ведь если юзать ZEOS то файл тоже находится в базе Delphi Код: plaintext Для малого объема сойдет, но для 100 метров тормозить будет по любому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2008, 21:13 |
|
||
|
Долгая работа скрипта на plperlu
|
|||
|---|---|---|---|
|
#18+
Garik888Но ведь в этом варианте файл храниться в базе, а как сделать что бы файл лежал в файловой системе.я только основную идею написал, а реализовать можно как угодно, что например Вам мешает воспринимать базу как кэш в который заливаются файлы только для того что бы передать их клиенту ? :) такой вариант например: сделайте ключ для LO из двух полей, первое - полное имя файла, второе - дата его создания/модификации + размер. функцию cache_file сделать чуть интеллектуальнее, что бы она перед загрузкой в базу проверяла, есть ли уже в базе такой файл, и совпадает ли его дата создания/модификации + размер с тем что в файловой системе. если совпадает - возвращаем из базы, если нет - очищаем LO и загружаем из файловой системы снова. что бы в базе не висели LO к которым уже никогда никто не захочет получить доступ - можно раз в сутки запускать скрипт который будет например проверять - есть ли в файловой системе файл лежащий в базе, если нету - удалять его из кэша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2008, 16:10 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35250562&tid=2004435]: |
0ms |
get settings: |
16ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 403ms |

| 0 / 0 |
