Request 504 Gateway Time-out Сервер не ответил вовремя на запрос больших данных.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Request 504 Gateway Time-out Сервер не ответил вовремя на запрос больших данных.

Сообщение Anonymous »

Мне нужна помощь и предложение. Я новичок в запросах.
Каковы мои цели: я хочу, чтобы возвращаемые данные не были TRUE на основе ElfStatisticJobBkp. но я имею дело с большими данными, и не могу найти правильный способ выполнения запроса.
Таблица ElfStatisticJobBkp представляет собой большой объем данных в базе данных, а $thejobname, полученный из API, также большие данные. $thejobname может содержать около 3000 данных, а таблица ElfStatisticJobBkp может содержать данные двухлетней давности.
Каждый раз, когда я выполняю операцию запроса ниже, он всегда получает запрос 504 Gateway Time-out сервер не ответил вовремя.
Я попытался уменьшить лимит API данных $thejobname с 3000 до 100, и все будет хорошо, но цель по идентификации всех заданий, существующих на сервере, не будет достигнута. API.

Код: Выделить всё

if(isset($result->token)){
$ctm_token = $result->token;
$arr = array('Wait','Condition');
$testvar = implode("%20",$arr);
$getheld = 'false';
$getcycle = 'true';
$url = $endpoint.'/run/jobs/status?limit=3000&status='.$testvar.'&held='.$getheld.'&cyclic='.$getcycle.'';
$header2 = array();
$header2[] = 'Authorization: Bearer '.$ctm_token;
//GET JOB DATA
$curl_data = curl_init();
curl_setopt($curl_data, CURLOPT_URL, $url);
curl_setopt($curl_data, CURLOPT_HTTPHEADER, $header2);
curl_setopt($curl_data, CURLOPT_HTTPGET, true);
curl_setopt($curl_data, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_data, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl_data, CURLOPT_SSL_VERIFYHOST, FALSE);
$result2 = json_decode(curl_exec($curl_data));
}

$finalData = [];
if (!empty($result2) && $result2->returned > 0 && $result2->total > 0) {
foreach ($result2->statuses as $value){
if (isset($value->estimatedStartTime)){
foreach ($value->estimatedStartTime as $estimatedstart) {
//existing $thejobname, $orderdate_call, $getjobid and etc...
$currenttimetest = date('H:i:s', time());
$testing1 = date('H:i:s', strtotime($currenttimetest) - 60);
$testing2 = date('H:i:s', strtotime($currenttimetest) + 60);
$sql = new \yii\db\Expression('CAST(stat_job_start AS time)');

$statistic_job_within_range = false;
$statistic_job_within_range = ElfStatisticJobBkp::find()
->where(['stat_job_name'=>$thejobname, 'stat_job_group'=>$thesubapp])
->andWhere(['between', $sql, $testing1, $testing2])
->exists();

$statistic_job_anomaly = false;
$statistic_job_anomaly = ElfStatisticJobBkp::find()
->where(['stat_job_name'=>$thejobname, 'stat_job_group'=>$thesubapp])
->andWhere(['not like', 'stat_job_status', 'NOT OK'])
->exists();

if ($statistic_job_anomaly != false) {
if ($statistic_job_within_range != true && $is_acknowledged != true && $is_snoozed != true && $estimated_start_time->format('Y-m-d H:i:s') format('Y-m-d H:i:s')) {
$rowData = array(
'orderdate' => $orderdate_call,
'jobid' => $getjobid,
'jobname' => $thejobname,
'subapp' => $thesubapp,
'status' => $thestatus,
'estimatestarttime' => $estimation_start_time_final,
'cycletype' => $desc_online_text2,
);
$finalData[] = $rowData;
}
}
break;
}
}
}
} else {
$result2 = Core::returnEmptyObject();
}
Есть ли способ достичь этой цели?

Подробнее здесь: https://stackoverflow.com/questions/785 ... g-data-que
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»