解决File size limit exceeded 错误的方法

2015-01-24信息快讯网

本篇文章是对File size limit exceeded 错误进行了详细的分析介绍,需要的朋友参考下

昨日遇到一个问题,使用Yii框架编写php脚本,将db中100多万的数据导出,运行,成功。

但是在 运行到第 49万条时,脚本终止,提示错误“File size limit exceeded”,遂google之,原来是某个文件大小超过系统限制。笔者第一反应,日志文件写满了???赶忙查看 log,居然只有几十K !!! 那么这个 “大文件”在哪里呢?

开始分析,不可能是Yii框架的问题,此乃linux操作系统异常问题与框架无光,也不是 日志文件大小,仔细查看了所有设置的log路径下的文件,均小的可以忽略,即使是将Yii的debug关掉,也出现了相同的问题。

那么换个思路,重新运行脚本,再次运行脚本,发现 dead的时间很有规律,均是在45万条记录时挂掉,一条不多一条不少,开始怀疑与进程有关。决定查看脚本进程所影响到的io。

1、先获取脚本进程的 <pid>;

2、使用lsof命令查看此pid的io情况 : lsof -p <pid>

发现一个疑似文件 data0/xdebug/cachegrind.out.<pid>,随着脚本的执行,这个xdebug文件的大小也随之增大,最后,如愿,挂掉!此时文件大小为:2147483647!!

哈哈,好熟悉的数字,2^31 -1 !!

看来问题找到了,在脚本执行时,xdebug也随之对这个脚本进程进行写记录日志,当此文件大小超出 系统所能支持的文件大小时,如期挂掉。

ok, 将xdebug关掉,重跑脚本,一百多万的记录顺利跑完,搞定。

ps: 笔者所使用的服务器为32位系统,而在32位操作系统中,由于是二进制,其能最大存储的数据是1111111111111111111111111111111。

正因为此,体现在其他可视系统中的十进制就为2147483647。

php检测用户是否用手机(Mobile)访问网站的类
codeigniter框架批量插入数据
eaglephp使用微信api接口开发微信框架
php Calender(日历)代码分享
codeigniter使用技巧批量插入数据实例方法分享
php制作unicode解码工具(unicode编码转换器)代码分享
linux实现php定时执行cron任务详解
php calender(日历)二个版本代码示例(解决2038问题)
解决file_get_contents无法请求https连接的方法
限制ckeditor上传图片文件大小的方法
php ckeditor上传图片文件名乱码解决方法
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
session在php5.3中的变化 session_is_registered() is deprecated in
php生成图形(Libchart)实例
php Session存储到Redis的方法
在PHP中使用redis
Linux编译升级php的详细方法
php cURL和Rolling cURL并发方式比较
与文件上传有关的php配置参数总结
使用PHP计算两个路径的相对路径
eAccelerator的安装与使用详解
深入PHP中的HashTable结构详解
php启用zlib压缩文件的配置方法
浅谈php中mysql与mysqli的区别分析
joomla jce editor 解决上传中文名文件失败问题
探讨php define()函数及defined()函数使用详解
linux环境apache多端口配置虚拟主机的方法深入介绍
探讨PHP使用eAccelerator的API开发详解
探讨:使用XMLSerialize 序列化与反序列化
PHP rawurlencode与urlencode函数的深入分析
深入for,while,foreach遍历时间比较的详解
探讨fckeditor在Php中的配置详解
解析dedeCMS验证码的实现代码
探讨php中header的用法详解
深入eAccelerator与memcached的区别详解
强烈声明: 不要使用(include/require)_once
基于php split()函数的用法详解
©2014-2024 dbsqp.com