PHP only store 1048576 characters in array

北慕城南 提交于 2019-12-20 02:49:13

问题


I'm working on a project that parses huge text files and store some of the information in MySQL DB. I noticed one of the field was missing info when it was displayed, however, when checking the DB (from phpmyadmin), it shows the data is complete, so the problem must be with the php, before the length of the array field is 1048576, whereas there are 1235597 characters in DB.

My php info shows memory_limit is 2048M, Mysql config shows: [mysqld] key_buffer = 32M max_allowed_packet = 32M

I don't know what else could have caused the problem... someone please help!!!

Thanks, Sean


回答1:


PDO's default buffer size is 1 MB (1048576), try bumping it up to 2 MB (2097152)

If you are using PDO directly, pass this as the 4th argument

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

If you are using Laravel, this can be done via the config/database.php file by adding an array of options to your connection

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


来源:https://stackoverflow.com/questions/16223847/php-only-store-1048576-characters-in-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!