Уважаемые программисты, прошу помочь. Танцы с бубном которые решаю уже 4 дня
параметры сервера
4 Гб оперативной памяти, 4 ядра, 120 Гб диска
Установил max_execution_time 6000
пробовал и max_execution_time 0 ставить (неограниченно)
пробовал в самом скрипте set_time_limit(0);
Сам парсер работает корректно, даже успевает спарсить товаров 50-800, но по 504 ошибке отключается.
На старом сервере (параметры те же) скрипт работал корректно и до конца, парсил все цены для 60 000 товаров
но скрипт отрубается уже на 10-й секунде и выдает 504, что еще увеличить чтобы продлить время работы скрипта
Мистика в том что если задан max_execution_time по идее скрипт должен выполняться в пределах этого лимита а он у меня падает раньше времени с 504 Gateway Timeout
Сервер после задания настроек перезапускал
даю в студию параметры моего php ini и сам парсер
log_errors_max_len 1024
max_execution_time 6000
max_file_uploads 500
max_input_nesting_level 64
max_input_time 60
max_input_vars 6000
post_max_size 500M
upload_max_filesize 500M
mysql.max_links -1
mysql.max_persistent -1
mysqli.max_links -1
mysqli.max_persistent -1
session.gc_maxlifetime 2400
Собственно и сам парсер позволяющий из 1С парсить наличие и цены в магазин на opencart
$file = "/var/www/www-root/data/www/ДОМЕН/offers/main/offers.xml";
if (file_exists($file)) {}else{
echo 'file not found';
exit;
}
$reader3 = new SimpleXMLReader;
$reader3->open($file);
$reader3->registerCallback("Предложения", function($reader3) {
$array3 = $reader3->expandSimpleXml(); // copy of the current node as a SimpleXMLElement object
///поехали парсить товары
$num = $array3->Предложение->count();
for ($i = 0; $i <= $num; $i++) {
$idProduct = $array3->Предложение[$i]->ИдТовара;
$quantity = $array3->Предложение[$i]->Наличие;
$price = $array3->Предложение[$i]->Цена;
if($quantity == 1){ $quantity = '1000000';}else{$quantity = '0';} //записываю просто есть в наличии или нет в магазин
$user_baze = "ЮЗЕР";
$pass_baze = "ПАРОЛЬ";
$name_baze = "БАЗА";
$mysqli4 = new mysqli('localhost', $user_baze, $pass_baze, $name_baze);
$result = $mysqli4->query("SELECT `idstore` FROM `link_product` WHERE `idimport`='$idProduct'");
if (!$result) {
die('Invalid query: ' . mysqli_error());
}
$myrow = mysqli_fetch_assoc($result);
$product_id = $myrow['idstore'];
$mysqli4->query("UPDATE `os_product` SET `quantity` = '$quantity', `price` = '$price' WHERE `product_id` = '$product_id'");
}
unset($array3);
});
$reader3->parse();
$reader3->close();
$start = microtime(true);
// тело скрипта
echo 'Парсинг цен из 1С окончен';
<IfModule mod_fcgid.c>
FCGIWrapper /path/to/data/php-bin/php .php
FcgidMaxProcessesPerClass 3
AddHandler fcgid-script .php
FcgidConnectTimeout 360
FcgidIdleTimeout 360
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Цель - собрать код с использованием OpenCASCADE (OCE) c crosscompile под windowsДля этого использую mxe с пакетом oce
пишу в qt creator, создал консольное приложение без qt, но русские буквы выводятся крокозябрами: