Или в cs-cart нет какого-то готового механизма приостановки загрузки? Делать по-старинке с переадресацией на страницу, где по таймеру будет заново запускаться загрузка, только с определенного места?
Просто в cs-cart есть красивый прогрессбар, почему бы не докрутить механизм..
Возьмите тест на 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?