Загрузка Больших Данных И Progressbar

Здравствуйте!

Делаем кастомную загрузку товаров в cs-cart, все работает, но не понятно, как разбить процесс загрузки на части.

Задача - загрузить 20.000 товаров с изображениями.

На 100 товарах все работает отлично.

Как сделать, чтобы процесс приостанавливался каждую минуту или каждые 50 товаров (чтобы обойти time limit на сервере)?

Нашли функцию fn_set_progress(), но как я понял, она просто прогрессбар выводит и не приостанавливает выполнение функции.

Может я чего-то не понял, кто в курсе как это делается на cs-cart, дайте, пожалуйста, наводку, куда копать?

Заранее спасибо!

Неужели ни у кого не было подобных задач?

Или в cs-cart нет какого-то готового механизма приостановки загрузки? Делать по-старинке с переадресацией на страницу, где по таймеру будет заново запускаться загрузка, только с определенного места?

Просто в cs-cart есть красивый прогрессбар, почему бы не докрутить механизм..

Возьмите тест на VPS, сделайте там базу, и поставьте уже на постоянный хостинг.

Возьмите тест на VPS, сделайте там базу, и поставьте уже на постоянный хостинг.

Вариант, конечно, рабочий, если бы это надо было сделать разово, но нам потом еще надо с определенной периодичностью обновлять их) Так что нужно делать по уму на рабочем сервере.

Тогда к разработчикам за помощью, оплачиваемой.

Месяц назад была похожая ситуация. Помимо VPS решений не нашлось.

Тогда к разработчикам за помощью, оплачиваемой.

Месяц назад была похожая ситуация. Помимо VPS решений не нашлось.

Обидно, будем изобретать велосипед)

Вопрос к разработчикам, решили писать PHP демон под задачу загрузки товаров, чтобы он порциями грузил данные и потом закрывался. Так вот, если мы в нашем модуле (в нужном контроллере) добавим конструкции "pcntl_fork()", "posix_setsid();" и др, то есть демонизируем скрипт, он будет работать корректно? То есть в дочернем процессе будут доступны функции ядра и других модулей cs-cart, как если бы мы запускали его из браузера, как обычно? Или это нереально

В общем, смысл в том, чтобы в скрипте демона были доступны функции cs-cart. Может есть какие-то другие варианты, типа как сделать просто php скрипт, который будет вызывать нужный контроллер по http с помощью Curl или еще чего-то. Уверен, что на данном форуме есть опытные разработчики, которые могу дать направление, куда двигаться, заранее спасибо.

Вопрос к разработчикам, решили писать PHP демон под задачу загрузки товаров, чтобы он порциями грузил данные и потом закрывался. Так вот, если мы в нашем модуле (в нужном контроллере) добавим конструкции "pcntl_fork()", "posix_setsid();" и др, то есть демонизируем скрипт, он будет работать корректно? То есть в дочернем процессе будут доступны функции ядра и других модулей cs-cart, как если бы мы запускали его из браузера, как обычно? Или это нереально

В общем, смысл в том, чтобы в скрипте демона были доступны функции cs-cart. Может есть какие-то другие варианты, типа как сделать просто php скрипт, который будет вызывать нужный контроллер по http с помощью Curl или еще чего-то. Уверен, что на данном форуме есть опытные разработчики, которые могу дать направление, куда двигаться, заранее спасибо.

В общем, что было сделано (описываю все, вдруг кому будет полезно):

1) В своем контроллере модуля вставил конструкцию для демонизации скрипта, типа:

$stop = false;
/**
 * pcntl_fork() - данная функция разветвляет текущий процесс
 */
$pid = pcntl_fork();
if ($pid == -1) {
    /**
     * Не получилось сделать форк процесса, о чем сообщим в консоль
     */
    die('Error fork process');
} elseif ($pid) {
    /**
     * В эту ветку зайдет только родительский процесс, который мы убиваем и сообщаем об этом в консоль
     */
    die('Die parent process');
} else {
    /**
     * Бесконечный цикл
     */
    while(!$stop) {
        /*
         * Тело демона. Рабочая нагрузка
         */
    }
}
/**
 * Установим дочерний процесс основным, это необходимо для создания процессов
 */
posix_setsid();

2) В schemas/permissions/trusted_controllers.post.php своего модуля разрешил доступ к контроллеру без авторизации в админ.панели.

3) Запустил из консоли php -f /путь/до/сайта/admin.php dispatch=мой_модуль.мой_контроллер

Все работает! Все функции cs-cart доступны!

НО! Если в теле демона начинаю использовать обращение к базе данных, типа

db_query('UPDATE ?:my_table SET ?u', array('name' => $name));

Все вырубается и в логах появляется ошибка "MySQL server has gone away (2006)". Не работает ничего, что связано с базой.

С чем это может быть связано? Теряется коннект с MySQL?