如何使用codeigniter优化活动记录?

时间:2016-01-29 11:57:53

标签: php codeigniter activerecord optimization mysqli

我有一个问题,一个错误:php中数组的最大大小,$ ID有一个最大值,我不知道如何解决它。 数组大小仅受服务器内存量的限制。我会失去记忆"错误,我无法更改php.ini 我需要优化这个功能,有些想法吗?

function delete_ScormByIdPlataforma($idPlatforma)
    {       
        if ($this->getIdScormVarsToDelete($idPlatforma) != 0)
        {
            $ids = $this->getIdScormVarsToDelete($idPlatforma);
            $this->db->where_in('ID_dispatch', $ids);
            $this->db->delete('scormvars');
        }//else
        //log_message('error', 'No se han encontrado scorms a borrar'.$this->db->_error_message().' - '.$this->db->last_query());
    }



function getIdScormVarsToDelete($idPlataforma)
    {
        $this->db->select('s.ID_dispatch');
        $this->db->from('scormvars as s');
        $this->db->join('dispatch as d', 's.ID_dispatch = d.ID_dispatch', 'INNER');
        $this->db->join('licencias as l', 'd.ID_licencia = l.ID_licencia','INNER');
        $this->db->where('l.id_plataforma', $idPlataforma);

        $query = $this->db->get();

        if($query)
        {
            if($query->num_rows()>0){
                foreach ($query->result() as $fila){
                    $data[] = $fila->ID_dispatch;
                }
                return array_unique($data);
            }
        }
        else
        {
            //log_message('error', 'No se han encontrado Dispatch a borrar'.$this->db->_error_message().' - '.$this->db->last_query());
            return 0;
        }
    }

2 个答案:

答案 0 :(得分:2)

这是您传递数据和编写代码的方式。因此,如果有很多连接或更大的功能,您可以将其切换到SP(存储过程)。

您可以通过

检查查询速度

__construct

中启用Profiler
$this->output->enable_profiler(TRUE);

并在您的代码中

$this->benchmark->mark('my_mark_start'); # my_mark_start can set any name with _start/ generate_start
$data['some_name'] = $this->model_name->modelFunctionName();
$this->benchmark->mark('my_mark_end'); # generate_end

这将显示您的代码花了多少时间来处理数据

答案 1 :(得分:1)

您无需编辑php.ini文件即可增加内存限制。您可以使用ini_set()

在脚本内的运行时设置新的内存限制
<?php
ini_set('memory_limit', '256M');

// From here on, the memory limit will be 256M.