作者ernieyang09 (乱入)
看板PHP
标题[请益] php取DB(XX万笔)到excel
时间Tue Nov 26 23:23:08 2013
大家好 最近遇到这个问题
我之前是使用phpexcel写的 然後是在demo做测试用
那时候没考虑到笔数问题 结果移植到实体上面就爆炸了
原因想当然尔是memory不足
我已经爬过关於phpexcel&php memory的问题
公司只愿意开128MB给一个user 似乎是很难解
请问各位有解吗(环境为php5.2.x 非5.3)
试过pear但是会有utf8问题 其他的套件就很难找了 能google的八成都是phpexcel
用了他一个本身的cache_to_sqlite
memory使用变成1/4 但是只写到3xmb还是死当跳出空白(那就跟原本120m差不多)
放宽条件的话顶多记忆体开开看512G 但是要写入最少25w笔资料(现在才五万多笔)
又如果无解 该如何告知公司上层比较好
我已经跟他们说过蛮多次关於memory的问题
但是由於我是刚入公司也是社会新鲜人 他们好像觉得这个都很容易解决
然後拿C&C++的概念跟我说应该很好处理
(公司写php的都没用过php写大量资料 都只是用来做网页呈现 最大的几个上司是底层的)
逻辑我很早就写好了 最近就被这搞了四五天 快发疯了
--
喜欢花的人, ╱ 爱花的人,
会把花摘走。 ╱ 会帮花浇水。
● ﹡ ╱ ∴∵∴∵ ○
φkcetair ■╯ ╱ * *** * * ** **∴∵∴∕□
ˇˇˇˇˇˇ ˇˇ ╯﹨ ╱ ˇ ˇˇˇ ˇ ˇ ˇˇ ˇˇ └▆ ∥
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.117.82
1F:推 dinos:一行一行吐csv? 11/27 00:12
2F:→ kosjason:是吐出CSV档? 不能分割成多档吗? 说真的25w笔在同一个 11/27 00:18
3F:→ kosjason:sheet 你电脑要打开 也要读一阵子吧 11/27 00:18
4F:→ danny8376:看这边应该是吐xls 不过用C写也会用掉超过128M记忆体吧 11/27 00:25
5F:→ kosjason:2003 xls上限不是65536吗? 2007 xlsx才有办法同sheet吧? 11/27 00:29
6F:→ ernieyang09:是xls or xlsx N worksheet 每个sheet col皆不同 11/27 00:34
7F:推 danny8376:总之PHPExcel记忆体就是吃很凶 11/27 00:44
8F:→ danny8376:PEAR的Spreadsheet_Excel_Writer才有办法 11/27 00:44
9F:→ danny8376:至於UTF-8问题 找一下就有解了 11/27 00:44
10F:推 alog:如果你不是应徵设计网站的,可以离开了 11/27 05:19
11F:推 alog:不过环境也该升上去了吧,现在都5.4 5.5了 11/27 05:25
12F:推 alog:纯汇出可以用C or C#输出好档案 在伺服端的目录 11/27 05:29
13F:→ alog:php则是排程汇出指令跟控管档案的输出 11/27 05:30
14F:推 alog:php本身设计不适合 这种需要长时间值行的工作 11/27 05:31
15F:推 alog:忘记说,不见得需要C之类的,Python做做看也行 11/27 05:34
16F:→ wildgoat:set_time_limit ? 11/30 09:41
17F:推 pigwolf:用jQuery+PHP一次送500笔试试,还可看到即时回应 12/01 14:13
18F:→ dlikeayu:先count笔数,再设个一次取的最大值,取资料用offset 12/02 02:30
19F:→ dlikeayu:来取一个range,以上再用while回圈去跑,取出的model每次 12/02 02:31
20F:→ dlikeayu:结束再unset掉,一直加回同一个变数里去render你的row 12/02 02:31