Alex300 |
|
---|---|
Судя по коду Вы загружаете изображение в память, а потом записываете на диск. Можно использовать функцию if (@copy('http://someserver.com/somefile.jpg','./somefile.jpg')) { echo "File copied from remote!"; } else { $errors = error_get_last(); echo 'COPY ERROR: ' . $errors['type']; echo '<br />\n' . $errors['message']; } Сэкономите память не загружая в нее данные, которые не собираетесь обрабатывать. Фактически файл при скачивании все равно будет загружен в память, но при сохранении на диск память будет освобождена. И это не расходует память, выделяемую скрипту на выполнение. // Проверяем, сохранилось ли изображение if (file_exists($fullImagePath)) Это лишнее. Функция PHP в режиме командной строки как правило не имеет ограничений по памяти и времени выполнения. Этот компонент позволяет запускать Cotonti из командной строки. Не накапливайте в памяти ненужные данные. После обработки каждого товара в памяти не должно оставаться "мусора". Ненужные более данные должны быть удалены или перезаписаны следующим товаром.
Модуль файлов используется в основном для удобной загрузки файлов и привязки их к объектам (страницы, посты, товары и т.п.) через веб интерфейс и для удобного вывода файлов в веб интерфейсе. Загрузка у Вас автоматизирована. Если вы не собираетесь выводить каталог товаров в браузер - особого смысла нет.
Если он все же нужен, у него нет отдельного метода для сохранения файла, который существует локально (надо бы сделать). Но можно написать примерно так: // $fullImagePath - Путь к файлу локально из Вашего примера $file = new File(); $file->original_name = $originalName; // Исходное имя файла (используется для отображения пользователю) $file->user_id = $uid; $file->source = 'shop'; $file->source_id = $product->id; // ID сохраненного товара $file->ext = mb_strtolower(cot_filesGetExtension($fullImagePath)); $file->mime_type = mime_content_type($fullImagePath); $file->is_img = 1; $file->size = filesize($fullImagePath)); Cot::$db->beginTransaction(); try { $fileId = $file->save(); if (!fileId) { throw new Exception('Ошибка при сохранении'); } // Path relative to files root directory $relativeFileName = FileService::generateFileRelativePath($objFile); $file->path = dirname($relativeFileName); $file->file_name = basename($relativeFileName); $file->filesystem_name = FileService::getFilesystemName($file->source, $file->source_field); // Path relative to site root directory $fileFullName = Cot::$cfg['files']['folder'] . '/' . $relativeFileName; if (!@rename($fullImagePath, $fileFullName)) { throw new Exception('Ошибка при сохранении'); } $file->save(); Cot::$db->commit(); } catch(\Throwable $e) { Cot::$db->rollBack(); // не удалось сохранить файл; }
Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english... Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/ |
|
Dieser Beitrag wurde von Alex300 (am 9. November 2024, 07:29, vor 5 Monate) bearbeitet |