Функция iconv_strlen, вызывающая тайм-аут выполнения, запущенный на MAMP - PullRequest
12 голосов
/ 23 марта 2011

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

Ответы [ 4 ]

16 голосов
/ 23 марта 2011

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

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

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

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

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

1 голос
/ 29 июля 2011

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

0 голосов
/ 26 августа 2011
0 голосов
/ 27 июля 2011

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);
}

?>
...