CodeIgniter невероятно медленный при небольшой загрузке страницы - PullRequest
1 голос
/ 02 мая 2019

Итак, я столкнулся с проблемой, которую я, вероятно, должен иметь только на больших страницах, но вместо этого я получаю это на ЛЮБОЙ странице.

Я пытаюсь создать REST API с помощью CodeIgniter, и он работает, но на любой странице, которую янагрузка очень и очень медленная.Я говорю о загрузке страницы в 20-30 секунд для страницы размером 504 байта.

Я добавил дополнительные тесты, и он показывает, что загрузка данных занимает примерно 0,04 секунды.

Rankings.php(Контроллер)

class Rankings extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('rankingsmodel');
    }

    /**
     * Index Page for this controller.
     */
    public function index()
    {
        $this->benchmark->mark('code_start');

        $rankings =$this->rankingsmodel->getAllRankings();
        $mappedRankings = array_map(array($this, 'mapRank'), $rankings, array_keys($rankings));

        $this->benchmark->mark('code_end');
        echo $this->benchmark->elapsed_time('code_start', 'code_end');

        return $this->jsonIFy($mappedRankings);
    }

    public function mapRank($ranking, $k)
    {
        $ranking['rank'] = $k;
        return $ranking;
    }

    public function jsonIFy(array $data = array())
    {
        echo json_encode($data);
    }
}

И моя рейтинговая модель

class RankingsModel extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
    }

    public function getAllRankings()
    {
        $this->benchmark->mark('code_start2');

        $query =$this->db->query('SELECT * FROM characters3 WHERE gm < 3 ORDER BY rebirths DESC')->result_array();

        $this->benchmark->mark('code_end2');
        echo $this->benchmark->elapsed_time('code_start2', 'code_end2');
        return $query;
    }
}

Я абсолютно не понимаю, почему страница загружается так невероятно медленно, в то время как мои тесты говорят, что для ее загрузки потребуется 0,03 / 0,04.Я пытался настроить xdebug, но мне не повезло, что он был настроен.Я использую обычные драйверы mysqli, которые поставляются с codeigniter.

Кто-нибудь знает, почему он такой медленный или какой-либо инструмент, который я могу легко настроить для отладки?

Спасибо

1 Ответ

0 голосов
/ 02 мая 2019

Хорошо, так что после нескольких часов копания я нашел проблему.

Проблема заключается в следующем:

Моя база данных получалась очень медленно (у нас есть демо на db4free или smth), и это заняло так много времени. Мы также установили для $db['default']['pconnect'] значение false, что означало, что мы должны были постоянно подключаться к базе данных.

Для целей тестирования установка pconnect в true решит проблему. И о: получите более быструю базу данных для производства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...