Я хочу создать таблицу отслеживания для отслеживания количества следящих за проектами каждый день. Таблица будет обновляться каждые 24 часа.
Результат будет выглядеть примерно так: последователи последовательности Instagram Line Line Chart
У меня сейчас два стола. Один для проектов и один для отслеживания Twitter.
Я хочу получить данные из таблицы проектов (идентификатор проекта, URL-адрес Twitter), превратить данные в переменные ($ ico_id, $ twitter_url), проанализировать количество подписчиков из Twitter и затем вставить все в таблицу отслеживания Twitter. И вставка должна быть выполнена для каждого проекта. В итоге у меня должно быть около 270 результатов каждый день.
Мне удалось вставить информацию об одном проекте с использованием foreach(), но он занял только первую строку и затем остановился.
Вот мой код:
<?php
class Tracker_model extends CI_Model {
#insert follower count
public function twitter_followers(){
$query = $this->db->get('icos');
if($query->num_rows() > 0) {
foreach($query->result() as $row) {
$ico_id = $row->id;
$twitter_url = $row->twitter;
$page = @file_get_contents($twitter_url);
$followers = @explode("followers_count":", explode(","friends_count", $page)[0])[1];
$data = array (
'ico_id' => $ico_id,
'twitter_url' => $twitter_url,
'year' => date("Y"),
'month' => date("m"),
'month_word' => date("F"),
'day' => date("d"),
'day_word' => date("l"),
'week' => date("W"),
'followers' => $followers
);
$insert_followers = $this->db->insert('twitter_followers', $data);
return $insert_followers;
}
} else {
return false;
}
}
}
?>
И это результат: Таблица MySQL. Код (модель) должен выполняться каждые 24 часа, и я буду использовать cron для этого. Спасибо, что помогли!
Ваша проблема связана с return
. Он завершит цикл, поэтому будет вставлена только первая запись. Удалите этот оператор возврата. Затем выполните свой код:
<?php
class Tracker_model extends CI_Model {
#insert follower count
public function twitter_followers(){
$query = $this->db->get('icos');
if($query->num_rows() > 0) {
foreach($query->result() as $row) {
$ico_id = $row->id;
$twitter_url = $row->twitter;
$page = @file_get_contents($twitter_url);
$followers = @explode("followers_count":", explode(","friends_count", $page)[0])[1];
$data = array (
'ico_id' => $ico_id,
'twitter_url' => $twitter_url,
'year' => date("Y"),
'month' => date("m"),
'month_word' => date("F"),
'day' => date("d"),
'day_word' => date("l"),
'week' => date("W"),
'followers' => $followers
);
$insert_followers = $this->db->insert('twitter_followers', $data);
}
} else {
return false;
}
}
}
?>