【问题标题】:PHP fgetcsv encounters Fatal error: Maximum execution time exceeded on FirefoxPHP fgetcsv 遇到致命错误:Firefox 上超过了最大执行时间
【发布时间】: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


【解决方案1】:

将以下内容添加到脚本的顶部:

set_time_limit(0);

这应该禁用脚本运行的时间限制。

【讨论】:

    【解决方案2】:

    不确定是否是这里的问题,但请查看 feof() pagefeof() pageTom 2006 年 10 月 24 日 10:27 的 cmets

    【讨论】:

      【解决方案3】:

      好的,我发现了问题。 $delimiter 值来自具有 3 个值的 "," ";"和 "\t" 哪个浏览器将 "\t" 显示为空格,我没注意。

      似乎 firefox 正在对 \t 做一些事情,所以 PHP 不明白它是选项卡。但其他浏览器按预期发送 \t。

      如果我像 fgetcsv($handle, 1000, "\t", '"') 一样对 "\t" 进行硬编码,也适用于 firefox。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-17
        • 1970-01-01
        • 2016-10-02
        • 2012-03-31
        • 2011-01-09
        • 2013-09-03
        • 2014-04-20
        • 2011-12-02
        相关资源
        最近更新 更多