$new_data = new stdClass();
self::initData($geo, $new_data);
//공기
$aqicn_url = 'https://api.waqi.info/feed/geo:'.$geo->lat.';'.$geo->lng.'/?token='.$_aqicn_token;
if($air = json_decode(self::file_get_contents_curl($aqicn_url, $_timeout)) && $air->status=='ok')
{
$new_data->aqi = self::getAirQualityIndex((int)$air->data->aqi);
$new_data->aqi->pm10 = $air->data->iaqi->pm10->v;
$new_data->aqi->pm10_color = self::getAirQualityIndex((int)$new_data->aqi->pm10, 'color');
$new_data->aqi->pm25 = $air->data->iaqi->pm25->v;
$new_data->aqi->pm25_color = self::getAirQualityIndex((int)$new_data->aqi->pm25, 'color');
$new_data->aqi->time = date('H:i', strtotime($air->data->time->s));
$new_data->aqi->time_full = $air->data->time->s;
}
elseif($air->status!='ok')
{
$new_data = new stdClass();
self::initData($geo, $new_data);
if($air = json_decode(self::file_get_contents_curl($aqicn_url, $_timeout)))
{
$air = json_decode(self::file_get_contents_curl($aqicn_url, $_timeout));
$new_data->aqi = self::getAirQualityIndex((int)$air->data->aqi);
$new_data->aqi->pm10 = $air->data->iaqi->pm10->v;
$new_data->aqi->pm10_color = self::getAirQualityIndex((int)$new_data->aqi->pm10, 'color');
$new_data->aqi->pm25 = $air->data->iaqi->pm25->v;
$new_data->aqi->pm25_color = self::getAirQualityIndex((int)$new_data->aqi->pm25, 'color');
$new_data->aqi->time = date('H:i', strtotime($air->data->time->s));
$new_data->aqi->time_full = $air->data->time->s;
}
elseif($cache_data)
{
$new_data->aqi = $cache_data->aqi;
}
}
php를 잘 모르는 입장에서 기존에 쓰여진 코드를 보고 수정해 본건데요.
이렇게 하는 이유는 간헐적으로 api에서 첫번째 시도시 비정상 응답을 하는 경우가 있습니다.
이때 다시 한번 요청시에는 거의 100% 정확한 응답을 하기때문에 실패시 한번을 더 시도하는 것으로 해보고 싶어 이렇게 고쳐 보았는데요.
물론 캐시는 ok 응답이 있을때만 저장하도록 밑에서 처리했습니다.
위 코드가 제가 의도한 대로 동작하고 문제가 되는 부분은 없을까요 ?