在阵列PHP只存储字符1048576(PHP only store 1048576 characte

2019-09-01 04:28发布

我工作的一个分析巨大的文本文件和存储一些在MySQL数据库中的信息的项目。 我注意到的领域之一是缺少信息就被显示时,然而,检​​查DB(从phpMyAdmin的)时,它显示的数据是完整的,所以这个问题必须与PHP,数组字段的长度之前1048576 ,而有在DB 1235597个字符。

我的PHP信息显示memory_limit的是2048M,Mysql的配置显示:在[mysqld]的key_buffer = 32M max_allowed_pa​​cket个= 32M

我不知道还有什么原因可能造成的问题......有人请帮助!

谢谢,肖恩

Answer 1:

PDO的默认缓冲区大小为1 MB(1048576),尽量颠簸起来,以2 MB(2097152)

如果您是直接使用PDO,通过这个作为第四个参数

$pdo = new PDO(
    $dsn,
    $username,
    $password,
    array(PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => 2097152)
);

如果您正在使用Laravel,这可以通过配置/ database.php中文件中加入一组选项,以你的连接来完成

// ...
    'mysql' => array(
        'driver'    => 'mysql',
        // ...
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'options'   => array(
            PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => 2097152
        ),
    ),
// ...


文章来源: PHP only store 1048576 characters in array