找回密码
 立即注册
搜索
楼主: takelook

php写大文件到mysql问题

[复制链接]

957

主题

2万

回帖

3万

积分

注册会员

积分
36136
 楼主| 发表于 2004-3-9 23:44:00 | 显示全部楼层
用LOAD_FILE函数啊
INSERT INTO table (id,content) VALUES(1,LOAD_FILE('C:\\temp\\somefile'));
回复

使用道具 举报

957

主题

2万

回帖

3万

积分

注册会员

积分
36136
 楼主| 发表于 2004-3-11 15:37:54 | 显示全部楼层
solaris 是权限问题
缺省创建的文件权限是0600,改成0644就行了
回复

使用道具 举报

327

主题

3264

回帖

3641

积分

荣誉版主

积分
3641
发表于 2004-3-12 09:14:50 | 显示全部楼层
哈哈,收到,学习了!
回复

使用道具 举报

957

主题

2万

回帖

3万

积分

注册会员

积分
36136
 楼主| 发表于 2004-3-12 23:23:17 | 显示全部楼层
终于找到最佳解决方案了

如果用mysql 的 LOAD_FILE函数,虽说解决了写数据库问题,但要在mysql里赋予给用户 file 权限,有安全隐患;而且如果文件大于16M,不仅mysql server要设置max_allowed_packet,mysql_client也要设置,否则读不出来;命令行可以加参数,PHP中如何设置我还没找到。

现在地解决办法是用mysql的函数concat 和 substring 把大数据文件分段写,分段读,避开了好多问题,而且也不要求PHP占用过大内存,当然了,速度要慢很多。

折腾了一个礼拜,俺现在很happy了
回复

使用道具 举报

327

主题

3264

回帖

3641

积分

荣誉版主

积分
3641
发表于 2004-3-13 13:32:50 | 显示全部楼层
如果是二进制的文件呢? substring能分割吗?
回复

使用道具 举报

957

主题

2万

回帖

3万

积分

注册会员

积分
36136
 楼主| 发表于 2004-3-13 18:46:14 | 显示全部楼层
试了二进制,没问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-22 23:35 , Processed in 0.085709 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表