CodeIgniter相当于send_long_data(),以避免超出mysql的最大包大小

时间:2013-06-05 01:02:34

标签: php mysql codeigniter

我一直在各地搜索,无法找到解决问题的方法。我正在尝试将我在其他位置使用的php类(如smf和wordpress)转换为codeigniter库。我目前唯一的打嗝是将数据发送回数据库。问题的原因是返回的数据量超过了php.ini文件设置的打包大小,我不想更改ini文件,因为如果需要迁移或将其分发给其他人,以后会出现问题使用。所以我需要的是CodeIgniter相当于......

// Send XML data in 8196 block chunks
$start=0;

// The XML data may be large in size, so we need to
// send the data in chunks to the MySQL driver to not
// exceed the max packet size for MySQL.
while ($start < strlen($xml))
{
    $end = $start + 8192; 
    if ($end > strlen($xml)) $end = strlen($xml);
    $statement->send_long_data(3,substr($xml,$start,$end-$start));
    $start = $end;
}
$start=0;
while ($start < strlen($xml))
{
    $end = $start + 8192;
    if ($end > strlen($xml)) $end = strlen($xml);
    $statement->send_long_data(4,substr($xml,$start,$end-$start));
    $start = $end;
}
$statement->execute();

我已将问题缩小到send_long_data。我已经修改了文件中的所有其他内容并且运行得很漂亮。有没有人知道在CodeIgniter中正确处理最大数据包大小的正确方法?

1 个答案:

答案 0 :(得分:1)

发现我的问题,该表默认为MyISAM,需要成为InnoDB。

为了引用其他人,更改它的sql命令是

ALTER TABLE `tablename` ENGINE = InnoDB;