【发布时间】:2011-02-18 11:17:48
【问题描述】:
首先我猜PHP中的“致命错误:超出最大执行时间”是服务器端错误,不应该取决于浏览器版本,对吧?不过好像有!?!
我有这段代码来读取来自表单文本区域的 csv 数据。
$handle = tmpfile();
fwrite($handle, $csvclip);
fseek($handle, 0);
while (!feof($handle)) {
$r = fgetcsv($handle, 1000, $delimiter, '"'); <---- Here it gives Fatal Error
print $r[0];
}
而数据就是这个,没什么特别的,4列3行。
a b 1 2
c d 3 4
e f 5 6
代码适用于所有浏览器(IE、Chrome 等),我可以看到除 Firefox 之外的解析数据!!!!!!我在不同的 PC 上进行了测试,但相同。所有浏览器都正常,但 Firefox 为具有“fgetcsv”的行给出“致命错误:超出最大执行时间”
我正在使用 PHP 版本 5.2.10 和 2 个不同的 firefox 版本 3.5.16 和 3.6.6
有人见过这个问题吗?
编辑:代码在两台不同的 linux 服务器 CentOS 5.3 和 5.5 上测试,使用两台不同的 PC 拥有所有浏览器。
编辑 2:已解决
好的,我发现了问题。 $delimiter 值来自具有 3 个值的 "," ";"和 "\t" 哪个浏览器将 "\t" 显示为空格,我没注意。
似乎 firefox 正在对 \t 做一些事情,所以 PHP 不明白它是选项卡。但其他浏览器按预期发送 \t。
如果我像 fgetcsv($handle, 1000, "\t", '"') 一样对 "\t" 进行硬编码,也适用于 firefox。
第一次 Firefox 给我带来了这么多麻烦,而不是 IE :)
【问题讨论】:
-
为什么要从临时文件中读取表单数据?
-
你输入的数据有多大?
-
您的
max_execution_time(在 php.ini 中)当前设置为什么?可以尝试增加它作为短期修复,以便您在尝试解决问题的同时进行开发。 -
@Zimbabao 我将来自 TEXTAREA 的字符串数据写入 tmp 文件,以便 fgetcsv 可以使用文件指针读取它。 @Pekka Data 有问题,只有 4 行 @Luke Max Execution Time 是 30 秒,这对于 4 行数据应该足够了
-
时间执行没有问题,它取决于服务器而不是浏览器:),你可能需要拆分你的 svc 的数据。因为它可能对于 Firefox 来说太大了,唯一的解释和显示数据块
标签: php firefox fatal-error execution-time fgetcsv