PHP fgetcsv встречает фатальную ошибку: максимальное время выполнения превышено в Firefox - PullRequest
0 голосов
/ 18 февраля 2011

Прежде всего, я предполагаю, что «фатальная ошибка: превышено максимальное время выполнения» в 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 !!!!!Я тестировал на разных ПК, но одинаково.Все браузеры в порядке, но Firefox выдает «Неустранимая ошибка: Превышено максимальное время выполнения» для строки с «fgetcsv»

Я использую PHP версии 5.2.10 и 2 разных версии Firefox 3.5.16 и 3.6.6

Кто-нибудь сталкивался с этой проблемой раньше?

Редактировать: код тестировался на двух разных Linux-серверах CentOS 5.3 и 5.5 с использованием двух разных ПК со всеми браузерами.

Изменить 2: решено

Хорошо, я нашел проблему.Значение $ delimiter происходит от наличия 3 значений "," ";"и "\ t", в котором браузеры отображают "\ t" как пробелы, и я не обратил на это внимания.

Похоже, firefox что-то делает с \ t, поэтому PHP не понимает, что это вкладка.Но другие браузеры отправляют \ t, как и ожидалось.

Если я жестко закодировал "\ t", например fgetcsv ($ handle, 1000, "\ t", '"'), то отлично работает и с firefox.

Впервые Firefox доставил мне столько хлопот, а не IE:)

Ответы [ 3 ]

1 голос
/ 18 февраля 2011

Добавьте в начало вашего скрипта следующее:

set_time_limit(0);

Это должно отключить ограничение времени выполнения вашего скрипта.

0 голосов
/ 01 апреля 2011

Хорошо, я нашел проблему. Значение $ delimiter происходит от наличия 3 значений "," ";" и "\ t", в котором браузеры отображают "\ t" как пробелы, и я не обратил на это внимания.

Кажется, что Firefox что-то делает с \ t, поэтому PHP не понимает, что это вкладка. Но другие браузеры отправляют \ t как ожидалось.

Если я жестко закодировал "\ t", например fgetcsv ($ handle, 1000, "\ t", '"'), то он отлично работает и с Firefox.

0 голосов
/ 18 февраля 2011

Не уверен, что это проблема, но посмотрите на комментарии Тома от 24 октября 2006 г. 10:27 на странице feof ()

...