В моем коде PHP Laravel у меня есть foreach l oop.
Я инициализирую переменную с записями данных модели.
У меня есть другая функция, которая вызывает конечная точка api с curl.
public function call_api($param1, $param2)
{
$endpoint = "http://apiendpoint.com/v1/datainfo=" . $param1 . "&info=" . $param2;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $endpoint,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30000,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: token',
),
));
$response = curl_exec($curl);
$error = curl_error($curl);
$final_response = "";
if ($error) {
$final_response = "ERROR";
} else {
$final_response = $response;
}
}
И внутри моей другой основной функции:
public function main_function()
{
$records = Mymodel::all();
foreach ($records as $record_result) {
$var_name = $record_result->name;
$var_age = $record_result->age;
$api_response = $this->call_api($var_name, $var_age);
if ($api_response != null) {
// add records to another table through a model
$model_obj = new Othermodel;
$model_obj->name = $var_name;
$model_obj->info = json_encode($api_response);
$model_obj->save();
}
}
}
Но когда я запрашиваю эту функцию через свой маршрут, она продолжает загружаться в течение 1-2 минут и затем отображается ошибка тайм-аута шлюза 504.
Я использую конечные точки api того же сервера, и они работают, за исключением этого. При доступе к конечной точке для одного результата он работает, при доступе через этот l oop возникает эта ошибка.