1

まず、PHPの「fatal error: maximum execution time exceeded」はサーバー側のエラーで、ブラウザのバージョンに依存するべきではないと思いますよね?しかし、それはあるようです!?!

フォームのテキスト領域からの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を使用しています

誰もこの問題を見たことがありますか?

編集: コードは、すべてのブラウザーを備えた 2 つの異なる PC を使用して、2 つの異なる Linux サーバー CentOS 5.3 および 5.5 でテストされています。

編集2:解決済み

問題が見つかりました。$delimiter の値は、「,」「;」の 3 つの値から取得されます。ブラウザが「\ t」をスペースとして表示する「\ t」と、私はそれに注意を払いませんでした。

Firefox が \t に対して何かを行っているようで、PHP はそれがタブであることを認識していません。ただし、他のブラウザは期待どおり \t を送信します。

fgetcsv($handle, 1000, "\t", '"') のように "\t" をハードコーディングすると、Firefox でも正常に動作します。

IEではなく、Firefoxが初めて私に多くの問題を引き起こしました:)

4

3 に答える 3

2

スクリプトの先頭に次を追加します。

set_time_limit(0);

これにより、スクリプトの実行時間制限が無効になります。

于 2011-02-18T11:22:36.057 に答える
1

わかりました、問題を見つけました。$ delimiter値は、3つの値 "、"";"を持つことから取得されます。そして、ブラウザが「\ t」をスペースとして表示する「\t」で、私はそれに注意を払いませんでした。

Firefoxが\tに何かをしているようで、PHPはそれがタブであることを理解していません。しかし、他のブラウザは期待どおりに\tを送信します。

fgetcsv($ handle、1000、 "\ t"、'"')のように" \ t "をハードコーディングすると、Firefoxでも問題なく動作します。

于 2011-04-01T13:34:35.407 に答える
1

ここで問題があるかどうかはわかりませんが、feof()ページの2006年10月24日10:27からのトムのコメントを見てください。

于 2011-02-18T11:47:20.403 に答える