PHP 写入 mysql 后出现反序列化错误,这会截断我的数据

标签 php mysql serialization

我正在构建一个信息关联数组,然后通过执行 $histarray[] = $histrec;

将其添加到历史数组中

然后我通过执行serialize($histarray)$histarray写入mysql。我将要写入的字段定义为文本字段。当变量变得很大(> 64k)时,反序列化命令停止工作,当我查看时,数据被截断。我重写了功能来序列化 $histarray 并将其写入文件夹,然后读取它并反序列化它。这不会导致同样的问题并且效果很好。

我有 2 个问题。

  1. 我假设 mysql 数据库或写入它的 php 正在截断序列化数据,但具体是什么原因导致的呢?我认为定义为文本的字段的大小基本上是无限的。
  2. 在这种情况下,直接读取文件并将其写入文件夹是否比将此信息存储在 MYSQL 表中更快?它只是临时 session 数据,不需要存储。

最佳答案

1. I assume that the mysql database or the php write to it is truncating the serialized data, but what specifically is causing this? I thought a field that was defined as text was basically unlimited in size.

PHP 中的字符串通常没有大小限制(理论上,实际上总是有限制的)。但实际上,PHP 中的字符串可能非常大。 PHP 字符串限制在这里不是问题。

但是数据库中的字段有大小限制。您可能想要对大数据使用 BLOLB 类型字段,或者 LONGBLOB 或者在 MySQL 中调用它: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

当字段无法获取全部内容时,MySQL 会截断(而不是不更新/插入)。

2. Is it faster to just read and write a file to a folder in this situation rather than store this info in a MYSQL table. It is only temp session data and does not need to be stored.

如果您根本不需要存储,最快的方法就是不存储:不在数据库中也不在文件系统中。

如果您确实需要存储,这取决于您的系统配置哪个更快。数据库和文件系统两者都可以非常快。

关于PHP 写入 mysql 后出现反序列化错误,这会截断我的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8567374/

相关文章:

java - 实现可序列化与扩展可序列化有什么区别?

python - 使用 Django Rest Frame 序列化非 django 模型

php - 如果两列相等则 MySQL 查询删除行

javascript - 使用 oracle 查询创建图表

php - Webex:如何列出主持人 session

php - 前端查询和 PHP SQL 语句

MySql错误: Can't update table in stored function/trigger because it is already used by statement which invoked this stored function/trigger

php - json_decode() 在网络服务器上不工作

mysql - 检查两列mysql之间的多个值

python - 如何将树类对象结构序列化为JSON文件格式?