Проблема исчезает при уменьшении количества импортируемых полей и/или товаров. Однако, каждый раз разбивать большой файл на 20-30 маленьких и загружать кусками, неудобно.
В техподдержке хостинга (Timeweb) развели руками, мол не понимают проблему. Подскажите, я в правильном месте ищу или это делается где-то в интерфейсе админки?
В правильном направлении. В настройках веб сервера есть такие параметры, как максимальное время выполнения скрипта, и максимальный объем передаваемых запросом данных. Есть еще memory_limit, и в конфиге магазина прописано 256МВ, но если вирт хостинг не позволяет управлять админ настройками, тошно и не изменить.
попробуйте заведомо с большим перекрытием значения
upload_max_filesize 64M
max_execution_time 3600
max_input_time с 600 - ну тут то 10 минут вполне достаточно…
сколько у вас памяти на процесс сервером выделяется?
Я нашел! В общем, я сам тут сегодня тем же самым вопросом задавался - мол как так, что поправить… сейчас ковырялся в файлах CS-Cart и нашел ту злополучную хрень, что мешала мне жить 3 года(!). Дело не в настройках базы данных или настройках php. Быть может что-то подкрутив в настройках MySQL и можно поправить, но оно не исправит то что в файле app/controllers/backend/exim.php(отвечает за импорт-экспорт) есть строка fn_define(‘DB_LIMIT_SELECT_ROW’, 30);, которая наглухо рушит любые поползновения в сторону производительности ограничевая итерации селекта 30 строкам(ну, это я так понял). Стоило только поменять на fn_define(‘DB_LIMIT_SELECT_ROW’, 10000); и вуаля… процесс который у меня занимал часы(и ради чего в настройках php время выполнения скриптоов было раздуто до не адекватных размеров) и теперь у меня файлы импортируются-экспортируются за минуту.
Я три года ломал голову, почему так долго(в пассивном режиме, грешил на настройку серверов), тратил часы на ожидание завершения процессов экспорта-импорта, которые часто завершались неудачами. У меня один из сайтов на котором еще нет посетителей висит на сервере с “небольшим запасом” в виде выделенного сервера с 16Gb оперативной памяти, процессором Xeon E5 последнего поколения и дисковой системой на быстрых SSD. И даже на этом железе процесс длился вечность… А оказывается у меня даже на слабых виртуалках(ну, относительно, менее 2х ядер, 4Gb памяти и без SSD у меня просто нет) всё летать может. Причем решил проблему сам, хотя раньше не раз задавал вопросы и тут на форуме и админам. Вот тут у меня реально бомбонуло.
Разработчики! Если делаете так, то хоть напишите об этом где-нибудь! Я, конечно, лояльный клиент, но блин… никуда я от вас не денусь, вы всё-же молодцы, однако всё-равно так не делайте
PS… помогает если не пытаться импортировать все возможные поля, а только нужные несколько. Иначе - всё-равно медленно. Хотя я сейчас обалдев от счастья решил выгрузить воообще всё что в правом поле экспорта, включая отдельные поля характеристик, данные для Яндекс.Маркета, десяток своих полей и что-то еще что прилипло со сторонними модулями. И тогда экспорт всё же напрягся(2000 товаров за 3 минуты). Но судя по всему всё-равно на часы не растянется.
У меня почему-то не решилась этим проблема. Также виснет. Надпись “Обновление Товары 24748”
В прайсе 4700 товаров, 39 колонок. Использую Модуль ecom labs “Характеристики В Отдельных Колонках”. Может с этим связано…
вот что написали с хостинга:
вот ошибки в логах
[Fri Jul 06 13:58:41.848853 2018] [:error] [pid 9912] [client 193.28.177.124:3514] PHP Fatal error: Allowed memory size of 996147200 bytes exhausted (tried to allocate 987 bytes) in /home/user/domains/hotparts.com.ua/public_html/app/Tygh/Database/Connection.php on line 736, referer: http://hotparts.com.ua/admin.php?dispatch=exim.import§ion=products
У вас тариф впс 500 где доступно всего 1Гб памяти. Вы установили сайту лимит на пхп скрипт 950Мб и вам его не хватает. Наверное вам нужен больший тариф и больше лимит памяти ставить (хотя куда уже больше). Скрипт импорта явно не расчитан на загрузку большого кол-ва товаров. Сколько в итоге ему надо памяти наверное даже разработчики не смогут сказать.
мы добавили вам памяти до 2Гб, пробуйте увеличивать лимит и делать импорт. ЧТобы определить сколько памяти в итоге нужно всего.
Сервер должен быть VPS (KVM), ОЗУ 4 Гб (или больше). У Вас же 33 000 товаров! Вы нагрузку при импорте смотрели? И зависит не только от ОЗУ, но и от CPU. Т.к. это не ПК, а виртуалка на которую действуют ограничения на процессорное время и кол-во ядер установленное администратором сервера. Железо влияет на скорость обработки запросов, значит чем слабее железо тем больше времени нужно на обработку, а значит настройки ПО должны быть с соответствующими тайм-аутами иначе фоновый процесс завершается раньше чем другой процесс вернул ответ и соответственно все ломается.
А как узнать сколько займет времени импорт определенного количества товаров? Скажем
15000 товаров. Чтобы увеличить таймаут на хостинге на нужное количество времени, т.к. увеличение таймаута платное. Хостинг hostland