В настоящее время я работаю с API REST в CodeIgniter для отображения сведений о местоположении пользователя на основе его IP-адреса.Проблема в том, что если IP-адрес пользователя существует, он будет просто извлечен из таблицы базы данных.В противном случае, если IP-адрес пользователя новый, он будет вызван из ответа API REST и сохранен в таблице базы данных, чтобы минимизировать количество вызовов API
. Я уже пытался использовать API ipstack для полученияРезультаты и использовать их на контроллере и просматривать.Однако, если будет большое количество пользователей, запрос API будет ограничен, потому что я просто использую бесплатную версию API.Я также попытался создать таблицу базы данных, чтобы вставить значения, извлекаемые API, а затем просто выбрать значения, чтобы минимизировать вызовы API.Я также пытался создать собственную модель для вызова в библиотеке API, которую я создал для вызова через API, но когда я загружаю модель в библиотеку, она выдает мне ошибки.
Я создал таблицу user_location
, чтобы сохранить значения, извлекаемые API, а затем отобразить их, чтобы минимизировать вызовы API.
Вот мой код для пользовательской модели, которую я создал для сохранения и получения результатов API в базе данных:
class Ipstack_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
/*
@Description : Select all the fields from the user_location table
@Author : Aristotle Doria
@Output :
@Created Date: 13-02-2019
*/
function get_user_location($table)
{
$this->db->select("*");
$this->db->from($table);
$query = $this->db->get();
return $query->result();
}
/*
@Description : Insert values from the user_location table
@Author : Aristotle Doria
@Output :
@Created Date : 13-02-2019
*/
function insert_user_location($table, $data)
{
$this->db->insert($table, $data);
}
}
Вотмой для библиотеки, которую я сделал для вызова API ipstack с помощью cURL.Я пытаюсь вызвать модель, которую я создал в библиотеке, чтобы проверить значения REST API в базе данных, но я немного застрял в этой части и выдавал некоторые ошибки .:
class Ipstack {
public function __construct()
{
$CI =& get_instance();
}
public function fetch_location($ip_address)
{
$CI->load->model('Ipstack_model');
$this->db->where('user_ip_address', $ip_address);
$query = $this->db->get('user_ip_address');
if($query->num_rows() > 0)
{
$this->db->get_user_location();
}
else
{
//set IP address and API access key
$ip = $_SERVER['REMOTE_ADDR'];
if( ENVIRONMENT == 'local' ) $ip = '112.211.220.109';
$access_key = 'e88d4f685c07d3dae06bd952cd7e3c62';
$curl_url = 'http://api.ipstack.com/'.$ip.'?access_key='.$access_key.'';
//Initialize CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $curl_url);
//store the data;
$json = curl_exec($ch);
curl_close($ch);
}
//Decode JSON response;
$api_result = json_decode($json, true);
return $api_result;
}
}
Вот ошибки, которые я получаю: