Я объясню вам мою проблему.Я разработал приложение на сервере Apache (и PHP (7.0.23), затем переключился на сервер Windows.
На Apache приложение работает нормально. Но на IIS у меня возникает ошибка 500, когда я выполняю этот запрос:
$sql = "INSERT INTO gracethd.t_error_table (et_rg_avct_id, et_uid, et_date, et_error_pourc, et_err_sum_per_id, et_table_name) ";
foreach ($availbleTable as $key => $value) {
$sql .= " SELECT " . $rg_avct_id . " as et_avct , '" . $rg_last_uid . "' as rg_last_uid , '". $rg_date . "'::timestamp as et_date, " .
" ROUND(COALESCE(NULLIF(B.nb_id_concerne,0)::numeric/ (SELECT COUNT(*) FROM ". $key ."),0)::numeric *100, 2) as et_error_pourc, ";
if( trim($key) !== 't_cond_chem' && trim($key) !== 't_cab_cond') {
$sql .= " B.total_erreur as et_err_sum_per_id , '" . $key ."'::varchar as et_table_name FROM " .
" (SELECT count(DISTINCT " . $arrayOfTable[$key][1] .")::numeric as nb_id_concerne, count(*) as total_erreur from gracethdcheckpub.". $arrayOfTable[$key][0] .
") AS B " .
" UNION ";
} else {
$sql .=
" (SELECT count(*) as total_erreur from gracethdcheckpub.". $arrayOfTable[$key][0] . ") as et_err_sum_per_id, '" . $key ."'::varchar as et_table_name FROM " .
" (SELECT count(*) as nb_id_concerne FROM (SELECT DISTINCT " . $arrayOfTable[$key][1] . " FROM gracethdcheckpub." . $arrayOfTable[$key][0] . ") c ) AS B " .
" UNION ";
}
}
$sql = substr($sql, 0, strlen($sql) -6);
$sql .= ';';
return $sql;
Иногда у меня есть огромное количество данных для вставки в базу данных, поэтому я изменил максимальный размер памяти в php_ini на 256M (7.0.21). С apache (тот же набор данных) это работает. На IIS iполучил ошибку FastCGI.
Я проверил журнал IIS и журнал PHP, в этом нет ничего существенного. Конечно, я установил для журнала ошибок значение «Вкл.»
Может быть, я что-то пропустил. Спасибо всем.