Мистика с max_execution_time

174
08 января 2019, 02:10

Уважаемые программисты, прошу помочь. Танцы с бубном которые решаю уже 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С окончен';  
Answer 1
<IfModule mod_fcgid.c>
FCGIWrapper /path/to/data/php-bin/php .php
FcgidMaxProcessesPerClass 3
AddHandler fcgid-script .php
FcgidConnectTimeout 360
FcgidIdleTimeout 360
READ ALSO
Undefined reference существующей функции?

Undefined reference существующей функции?

Цель - собрать код с использованием OpenCASCADE (OCE) c crosscompile под windowsДля этого использую mxe с пакетом oce

206
Ошибка expected unqualified-id before &#39;else&#39;|

Ошибка expected unqualified-id before 'else'|

Не работает кодХотя должен

167
Приложение qt не работает русский язык

Приложение qt не работает русский язык

пишу в qt creator, создал консольное приложение без qt, но русские буквы выводятся крокозябрами:

181