| 
    
            
         
         | 
    
  | 
Обмен с клиентами и конвертация изображений. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        vicof    
     09.07.21 
            ✎
    12:14 
 | 
         
        1. Клиент хочет выгружать для своих клиентов гибко настраиваемый список объектов и полей этих объектов. Это работает. Поля и отборы задаются на СКДшке, все норм. Выгрузка идет через FTP, причем FTPшников может быть указано несколько.
 
        2. При этом у клиента есть PDFки, которые он хочет отправлять клиенту, конвертируя в PNG/JPG с разными ширинами и высотами картинок. Здесь как бы тоже все работает. Через imagemagick все конвертируется. 1 картинка примерно 5 сек. 3. А потом он хочет в выгружаемых объектах из п.1 указывать ссылки на выгруженные картинки, соответствующие этим объектам. И чтобы все работало прям быстро-быстро. И вот тут у меня наступает когнитивный диссонанс. Нужно понимать, что выгрузилась картинка или нет. Это опрашивать все FTP на наличие картинки в таком-то разрешении с таким-то форматом. Нужно максимально уменьшить время выгрузки, поскольку клиентов может быть куча. И понимать, выгружать картинки с указанными параметрами из 2. для данного клиента на указанный FTP, или нет. Но по времени это пипец как долго будет. 1 клиент * 200 объектов * 3 картинки на объект * 5 секунд на картинку. И это только на выгрузку. Т.е. на одного клиента примерно 1 час на выгрузку. Можно процессы выгрузки картинок и объектов разделить. Но тогда надо понимать, что мы выгрузили, что нет. Думал, про веб-сервисы. Чтобы клиент сам указывал, что он хочет по какой настройке в каких форматах, получить. Но тогда конвертация картинок при выгрузке также будет происходить долгое время. Может, у кого-нибудь будут еще взгляды, как можно сделать выгрузку быстрой, но при этом гибко настраиваемой?  | 
|||
| 
    1
    
        1Сергей    
     09.07.21 
            ✎
    12:16 
 | 
         
        Вроде как, пока файл не записался полностью, имеет размер 0 байт. Можно на это проверять     
         | 
|||
| 
    2
    
        ДенисЧ    
     09.07.21 
            ✎
    12:16 
 | 
         
        Чтобы картинка конвертировалась быстрей - нужно взять более мощный компьютер...     
         | 
|||
| 
    3
    
        Kassern    
     09.07.21 
            ✎
    12:17 
 | 
         
        (0) вопрос, а зачем вообще конвертировать pdf в картинку?? Проще сразу pdf выплевывать клиенту. Он нормально в вебе открывается     
         | 
|||
| 
    4
    
        Kassern    
     09.07.21 
            ✎
    12:18 
 | 
         
        (0) если все же нужно время на обработку, делайте через токены. Клиент запрашивает, вы ему сразу возвращаете токен. Далее клиент по этому токену получает сконвертированные файлы, если они готовы.     
         | 
|||
| 
    5
    
        ДенисЧ    
     09.07.21 
            ✎
    12:18 
 | 
         
        (3) pdf уже можно вставить в <img../> ? С каких пор?     
         | 
|||
| 
    6
    
        Kassern    
     09.07.21 
            ✎
    12:19 
 | 
         
        (5) а накой вам в img вставлять? можете ссылку на pdf скидывать, либо в теле возвращать     
         | 
|||
| 
    7
    
        rozer76    
     09.07.21 
            ✎
    12:20 
 | 
         
        а почему не складывать картинки в облако и не давать на них ссылки     
         | 
|||
| 
    8
    
        Kassern    
     09.07.21 
            ✎
    12:20 
 | 
         
        (0) Если же нужно ускорить фтп, могу посоветовать winscp библиотеку. Через нее гораздо быстрее отрпавка и получение отрабатывает, так же есть возможность работать с sftp     
         | 
|||
| 
    9
    
        Kassern    
     09.07.21 
            ✎
    12:22 
 | 
         
        (5) типа такой ссылки давать да и все https://www.cryptopro.ru/sites/default/files/products/pdf/files/CryptoProPDF_UserGuide.pdf     
         | 
|||
| 
    10
    
        Kassern    
     09.07.21 
            ✎
    12:25 
 | 
         
        (0) В общем, если получится договориться без конверта в картинку, то просто выгружаете свой файл обмена с привязкой к ссылке на pdf. Файлик этот выплевываете после того как через winscp библиотеку успешно выгрузка прошла pdfок, там приходит ответ от библиотеки. И будет вам счастье.     
         | 
|||
| 
    11
    
        vicof    
     09.07.21 
            ✎
    12:27 
 | 
         
        (1) Не понял. Как это повлияет на скорость выгрузки картинок?
 
        (3) Не хотят отдавать pdf-ку, хотят изображения. Один отдел готовит эти pdf-ки, а во что они будут сконвертированы и куда отправлены им уже пофиг. (7) Можно. Но как связать, что вот эта вот картинка нужна вот в этой вот настройке выгрузки и если уже выгружена, то не выгружать? (8) Знаем, есть такая. Но непонятно, как она поможет ускорить выгрузку. Т.е. 1 файл конвертируется 5 сек. А Xml-ка выгружается секунд 30. В основном время тратится на отбор нужных объектов. (10) Не получится договориться, уже проверено) А потом клиент удалил картинку, и нам надо понимать, выгружать картинку заново или нет. Или мы удалили, у клиента тоже эта картинка должна удалиться.  | 
|||
| 
    12
    
        Вафель    
     09.07.21 
            ✎
    12:27 
 | 
         
        А в чем проблема то? 
        Ты же знаешь куда картинка ляжет  | 
|||
| 
    13
    
        vicof    
     09.07.21 
            ✎
    12:30 
 | 
         
        (12) Проблема в том, что картинок может быть куча. А в момент выгрузки картинки я или не знаю, какому объекту она принадлежит, если выгружать данные и картинки разными процедурами. Или знаю, но конвертация картинки происходит долгое время, что тоже не устраивает клиента.     
         | 
|||
| 
    14
    
        1Сергей    
     09.07.21 
            ✎
    12:32 
 | 
         
        (13) чот бардак какой-то. нельзя структурированно раскладывать файлы на ftp?     
         | 
|||
| 
    15
    
        Kassern    
     09.07.21 
            ✎
    12:32 
 | 
         
        (13) ну так в имени картинки привяжи ее к объекту     
         | 
|||
| 
    16
    
        Вафель    
     09.07.21 
            ✎
    12:33 
 | 
         
        (13) но ты же знаешь заранее что картинки будут и в каком формате тоже известно     
         | 
|||
| 
    17
    
        Вафель    
     09.07.21 
            ✎
    12:34 
 | 
         
        Чтобы не было битых ссылок, сначала выгружай картинки     
         | 
|||
| 
    18
    
        Kassern    
     09.07.21 
            ✎
    12:34 
 | 
         
        (11) эта библиотека возвращает ответ, когда ты файлы передаешь. Это помогает на 100% удостовериться, что файл ушел на фтп. А после грузишь уже свою xml/jsn с привязкой ссылки на картинку к нужному объекту     
         | 
|||
| 
    19
    
        rozer76    
     09.07.21 
            ✎
    12:34 
 | 
         
        (11) >>Можно. Но как связать, что вот эта вот картинка нужна вот в этой вот настройке выгрузки и если уже выгружена, то не выгружать? 
 
        ну как - взять и связать в РС )  | 
|||
| 
    20
    
        Kassern    
     09.07.21 
            ✎
    12:37 
 | 
         
        (11) при удалении картинки, так же вначале проверяешь на наличие, если есть, то удаляешь с фтп и выгружаешь свою xml/json с записью, что такая картинка удалена. К примеру добавить тек <deleted_picture>ГуидКартинки</deleted_picture> либо свойство добавить для блока картинки, типа <active>false</active>     
         | 
|||
| 
    21
    
        Kassern    
     09.07.21 
            ✎
    12:39 
 | 
         
        (20) тут конечно, лучше в обратном порядке, сначала файл удалением, а потом само удаление. Если же клиент сам удаляет картинку, то это надо через http сервис мутить.     
         | 
|||
| 
    22
    
        Kassern    
     09.07.21 
            ✎
    12:43 
 | 
         
        (11) Если же клиентов дофига и все же нужно конвертировать данные, то тогда лучше свою апишку поднять. Пускай клиенты сами запрашивают, что им надо. Как я и писал в (4) Клиент просит документы, ты ему даешь токен и пишешь в свою базу с привязкой массиву нужных данных для конверта и формат конверта. Далее, как у тебя по рег заданию все сконвертится сможешь по токену вернуть нужные данные.     
         | 
|||
| 
    23
    
        Галахад    
     гуру 
    09.07.21 
            ✎
    12:44 
 | 
         
        "1 клиент * 200 объектов * 3 картинки на объект * 5 секунд на картинку"
 
        Запустить 600 фоновых заданий. И если сервак сдюжит, через 5 минут будет 600 картинок. :)  | 
|||
| 
    24
    
        Галахад    
     гуру 
    09.07.21 
            ✎
    12:45 
 | 
         
        (23) 5 секунд, конечно же.     
         | 
|||
| 
    25
    
        Kassern    
     09.07.21 
            ✎
    12:46 
 | 
         
        (24) он конвертит через какую то прогу, думаешь она поддержит 600 запусков параллельно?     
         | 
|||
| 
    26
    
        Fragster    
     гуру 
    09.07.21 
            ✎
    12:46 
 | 
         
        каждому клиенту своя версия картинки? рили?     
         | 
|||
| 
    27
    
        Fragster    
     гуру 
    09.07.21 
            ✎
    12:47 
 | 
         
        (25) какую-то, лол     
         | 
|||
| 
    28
    
        Kassern    
     09.07.21 
            ✎
    12:47 
 | 
         
        (27) не работал с ней, для меня какая то)     
         | 
|||
| 
    29
    
        Fragster    
     гуру 
    09.07.21 
            ✎
    12:50 
 | 
         
        схоронить у себя все картинки один раз, отдавать клиенту уже предварительно сконвертированные ранее не выгруженные картинки (например сделать план обмена с реквизитом "ftp" и на него регистрировать новые данные для выгрузки, в дальнейшем отдавать только новые данные)     
         | 
|||
| 
    30
    
        Kassern    
     09.07.21 
            ✎
    13:02 
 | 
         
        (29) тут все зависит от специфики и соотношения. Если нужно конвертировать всего 10% от общего числа файлов и файлов ооочень много, то лучше по запросу.     
         | 
|||
| 
    31
    
        Aleksey    
     09.07.21 
            ✎
    13:31 
 | 
         
        (23) Это так не работает. Даже на разбивку на 600 заданий требуется время     
         | 
|||
| 
    32
    
        vicof    
     09.07.21 
            ✎
    15:15 
 | 
         
        (14) не бардак. Я в момент создания настройки определяю не объекты, а отборы. Файлы структурированно раскладываются. А вот их добавление/обновление/удаление на FTP и синхронизация с базой, в которой эти картинки храниться не должны, а должны только выгружаться по запросу, вот это да, проблема.
 
        (17) Да это понятно, ну представь, ты отправил запрос и ждешь 3 часа, пока выгрузятся картинки. Норм?) (29) Наши отказываются у себя сохранять, потому что место будет сжираться очень быстро и много. А база уже и так немаленькая. Планы обмена не подойдут, потому что я не знаю какие конкретно объекты по каким настройкам будут выгружаться, и соответственно, таблицу изменений в момент записи объектов заполнить не смогу. Или при записи каждого объекта надо будет читать кучу настроек, что тоже будет очень долго. (21)(22) Про веб- и хттп-сервисы думал, но тогда время на получение картинок также получается большим, и ждать 3 часа одного вызова веб-сервиса как-то не комильфо) Или имеешь ввиду, что запрос сделал, время прошло, данные подготовились, результат куда-то выложился, и клиента оповестить?  | 
|||
| 
    33
    
        Kassern    
     09.07.21 
            ✎
    15:30 
 | 
         
        (32) зачем ждать 3 часа на один вызов, вызовы должны быть практически моментальными! У тебя Вася запросил УПДшку в формате jpg к примеру. Твой сервис вернул Васе токен 3355501123. У себя в базе записали например в регистр токен, нужный формат, нужный документ, строчка с путем для сформированного файла и признак, выгружен или нет. Далее делаешь рег задание, которое будет по этому регистру проходить, формировать картинки и пихать путь для них в него. Вася через какое то время заново долбится в твой веб сервис сообщая полученный токен, ты со своей стороны проверяешь, сформированы ли все пути по данному токену, если да, то возвращаешь васе пакет документов в виде ссылок. Если не готов, то так же сообщаешь. Как то так, можно регистр конечно обыграть по разному, это лишь один из примеров, который первый в голову пришел)     
         | 
|||
| 
    34
    
        Kassern    
     09.07.21 
            ✎
    15:32 
 | 
         
        (32) та же почта россии использует данный способ, когда хочешь получить историю по 3тыс посылок. Чтобы не заддосить, они дают токен, по нему готовят для тебя историю и через какое то время ты можешь получить всю историю по посылкам переданным в токен.     
         | 
|||
| 
    35
    
        vicof    
     09.07.21 
            ✎
    15:34 
 | 
         
        (33)(34) Понял, спасиб, подумаю.     
         | 
|||
| 
    36
    
        lodger    
     09.07.21 
            ✎
    16:32 
 | 
         
        (35) а ещё подумай, чтобы после каждого ресайза и формата сохранить у себя на сервере эту версию. тогда в следующий вызов с такими параметрами не нужно будет запускать конвертер, а достать из своей библиотеки миниатюр.     
         | 
|||
| 
    37
    
        lodger    
     09.07.21 
            ✎
    16:34 
 | 
         
        (32) "А база уже и так немаленькая." - так храни в томе.     
         | 
|||
| 
    38
    
        lodger    
     09.07.21 
            ✎
    16:34 
 | 
         
        (36) + (37) + регламент по очистке самых старых и ненужных миниатюр.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |