Вопрос к разработчикам и знатокам

Добрый день! Увидел что в cscart есть класс class Amazon extends ABackend. И в стандартном storage контроллере можно поменять на s3, но там нет настройки Российских серверов. Почему не используем его на России? И вообще какова логика его работы? Она сразу отправляет фото на s3 или после сохранения на сервере? И еще генерированные иконки тоже отправляет?

поддерживаю, интересная функция, для России также нужно делать интеграцию с s3.

1 лайк

Это останки недоделанной фичи. В CS-Cart нет поддержки S3 хранилищ

Да видел что для работы с s3 нужно ломать storage и переписать функции такие как fn_attach_image_pairs, fn_generate_thumbnail. В будущих обновлениях будет возможсть использования s3 хранилища? Или уже отказались от этой идеи? @Nail.Gafin

Пока нет этого в планах.

Предложение добавить поддержку S3 хранилища от Amazon есть давно, а про российские аналоги пользователи кажется вообще раньше не спрашивали. Я добавил все запросы в задачу, чтобы команда могла оценить спрос

1 лайк

У меня есть примерно не доделанный модель по s3. Под основу взял амазоновский который почти во всех Российских серверах используется. Но там я столкнулся с проблемой иконок и локальных фотографий. Пытался не ломая переписать Storage не получилось. Было бы хорошо если бы было стандартное решение этого вопроса. Многие функции защищенные не публичные. Из за этого extends писать геморно. Если что могу отправить вам этот модуль.

Для России интересует S3 от beget. Буду рад затестить если в будущем появится интеграция.

@Nail.Gafin Как вы решили проблему с загрузкой данных из assets которые автогенерируются? По идее эти данные не должны загружаться в s3 а должны работать с локалки. Получится ли вместо отправки storage s3
Settings::instance()->updateValue(‘storage’, serialize($storage_data)); отправить массив где есть storage => [‘file’, ‘s3’]? Сделал как вы но только класс другой с отправков в timeweb s3 но столкнулся с загрузкой assets сов. Потому что cscart пытается получить эти js и css из s3, но так не получается получать

В итоге сделал костыль где проверяю тип данных и использую методы file чтобы assets работал только с file.

Насколько я понял, эта проблема не была решена в том прототипе, который делала наша команда.

Я полностью сделал подключение и добавление данных через s3. И еще сделал так чтобы не переносила assets данные и использовала их на стороне локального сервера. Но столкнулся с проблемой на фронте. Она отдает 504 ошибку. Как я понял это происходит из за ограничения времени на стороне nginx и FastCGI. И еще после перехода на s3 постоянно выходит ошибка
PHP message: PHP Warning: explode() expects parameter 2 to be string, array given in /var/www/cscart.ru/data/www/cscart.ru/app/functions/smarty_plugins/block.styles.php on line 353" while reading response header from upstream
Думаю это тоже влияет на 504 ошибку.

На стороне админ панели все корректно работает кроме добавления фотографии к товару.

Пришел к выводу, прямое обращение на s3 через Storage на cscart плохо работает. PHP не успевает выполнить запросы. Попробую сделать так чтобы записи сначало сохранялись локально. Но буду записывать каждый image в свою таблицу. При генерации иконок тоже самое только на другой таблице. И кроном буду записывать в s3. И при следующем get методе буду проверять на запись в s3 если он записан и url есть буду показывать его. Если нет то функция будет идти и вытаскивать с локалки. Думаю из за этого разработчики cscart забросили идею интеграции s3. Печально что не работает как на laravel. На прямую