Подтвердить что ты не робот

Iconv_strlen вызывает таймаут выполнения, запущенный на MAMP

У кого-нибудь возникли проблемы с функцией iconv_strlen во время работы MAMP?

4b9b3361

Ответ 1

У меня возникла проблема с таймаутом, но не с исключениями. Я работаю над сайтом Zend Framework. Следуя отладчику глубоко в кишки, я отследил проблему до использования iconv_strlen. Он не вызывает какую-либо странную строку, это простая функция, используемая для проверки имени хоста.

Чтобы проверить проблему, я попробовал простой значок iconv_strlen ( "test", "UTF-8" ); Это вызывает появление ошибки - бесконечный вращающийся загрузчик в браузере, но сообщение об ошибке отсутствует, а script выходит за пределы максимального времени выполнения. Похоже, что в этой версии PHP это нечеткое число.

Мой коллега нашел эту статью, которая могла бы решить эту проблему. Я на машине Mac OS X обновлен до последнего Snow Leopard, который составляет 10.6. Кажется, что это известная ошибка, и есть обходной путь, если вы создаете свой собственный php или используете встроенную версию Apple или используете порты.

Короче говоря, вы можете вникать в перекомпиляцию своего собственного php с вышеупомянутым патчем, но этот вид побеждает точку MAMP в первую очередь.

Самое быстрое решение просто либо никогда не использует iconv_strlen() (или любую из функций iconv_) - и это не вариант, если вы используете Zend Framework, или еще раз верните MAMP для использования php 5.2.

До тех пор, пока MAMP не начнет включать исходные файлы php и не предоставит метод, позволяющий легко перекомпилировать php в комплекте со всеми необходимыми библиотеками, это обязательно останется ограничением пакета. MAMP отлично работает, пока вы не дойдете до точки, где вам нужно перекомпилировать php. Когда это происходит, гораздо проще просто использовать порты.

Ответ 2

В случае, если у кого-то все еще есть эта проблема, я долгое время боролся с этим, но обновление до самой последней версии MAMP Pro на OSX Lion, похоже, сработало для меня.

Ответ 3

wbond, вы немного перепутались. MAMP 1.9.4 работает на 100% штрафа. Его любая версия MAMP от 1.9.5 до 2.0.1, содержащая проблему "iconv". Кроме того, я тестировал ваше решение в PHP 5.3.6 в MAMP 2.0.1, и он не работает. Единственное решение - откат к MAMP 1.9.4 или использование последней MAMP, но откат PHP обратно до 5.2.x.

<?php 

$str = 'Hello, world!';
$str = iconv_function('UTF-8', 'UTF-8//IGNORE', $str);
echo $str;

function iconv_function ($in_charset, $out_charset, $str) {
  return iconv($in_charset, $out_charset, $str);
}

?>