我有一个错误的问题:PHP 中数组的最大大小,$ids有一个最大值,我不知道如何解决它。阵列大小仅受服务器内存量的限制。我会内存不足"错误,我无法更改 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;
}
}
这是你传递数据和编写代码的方式。因此,如果有很多连接或更大的函数,您可以将其切换到SP(存储过程)。
您可以通过以下方式检查查询速度
在__construct
中启用探查器
$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
这将显示您的代码处理数据所花费的时间
您无需编辑php.ini
文件即可增加内存限制。您可以在运行时在脚本中设置新的内存限制,使用 ini_set()
:
<?php
ini_set('memory_limit', '256M');
// From here on, the memory limit will be 256M.