PHP Laravel curl внутри foreach l oop 504 ошибка тайм-аута шлюза - PullRequest
0 голосов
/ 03 августа 2020

В моем коде 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 возникает эта ошибка.

...