我们有一个工作流程系统,用于将工作偏移到其他服务器。工作流程工作数据最近变得非常大(我们习惯了)。在json编码数组中存储多达6MB的数据。
在开发服务器上结合phpmyadmin,我们可以完整地提取LONGBLOB
job_data
字段的内容,并在文本编辑器中查看以确认整个json数组是否存在
当我们尝试使用php提取数据时,我们觉得我们正在达到某种默认限制。
查询没什么特别的:
SELECT
workflow_ID,
job_script,
job_created_time,
job_data
FROM
workflow
WHERE
job_started_time IS NULL
ORDER BY
job_created_time
ASC
LIMIT 0,1
打印job_data
行时会被截断。我们发现问题的例子是db。中的4.7mb。
有没有人遇到任何其他类似的问题,是否有一个我可能需要增加的php mysql SELECT限制?我在谷歌或这里找不到任何东西。
答案 0 :(得分:1)
响应上述评论者的帮助,@ Lashane和@MarcB
我正在使用pdo的答案:
添加到PDO __construct上的phpFreaks选项数组\PDO::MYSQL_ATTR_MAX_BUFFER_SIZE
,由gizmola添加:
$this->db_con = new \PDO("mysql:host=$db_hostname;dbname=$db_database",
"$db_username",
"$db_password",
array(
\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
\PDO::MYSQL_ATTR_MAX_BUFFER_SIZE=> 16777216 /* 16mb max output to php from field */
)
);
对于提取,请将\PDO::PARAM_LOB
添加到所需的列中(我的案例中$column_number
为4,即OP查询的job_data
):
$statement->bindColumn($column_number, $lob, \PDO::PARAM_LOB);