<rmcreative>

RSS

Все заметки с тегом «php»

Можно уточнить:

  1. Unable to allocate memory for pool

    14 сентября 2011

    Буквально двадцать минут назад забился кэш APC на форуме yiiframework.ru. Расследование проблемы заняло некоторое время. Итак, что же делать при получении Unable to allocate memory for pool.

    • Сливаем архив с APC.
    • Берём оттуда apc.php и заливаем на сервер.
    • Открываем apc.php в браузере и смотрим, есть ли у нас свободная память.
    • Если нет, меняем в php.ini значение apc.shm_size.
    • Рестартим PHP.

    Проблема может быть и другого рода, но чаще всего это именно забитый кэш.

    14 комментариев
  2. unset

    5 сентября 2011

    Ещё одна интересная особенность PHP, которую хорошо бы знать, чтобы не терять много времени при встрече с ссылочным foreach:

    $val = '2';
    $arr = array('1', &$val);
    var_dump($arr);
    unset($val);
    var_dump($arr);

    Штука действительно очень зла, если про неё забыть. Максим напоминал мне больше, чем целый день…

    13 комментариев
  3. Осторожно, in_array

    3 сентября 2011

    Такая функция как in_array используется очень часто. Однако, есть особенности, на которые сегодня обратил моё внимание aktuba, дав мне вот такой кусочек кода:

    $array = array(0, 'one', 'two');
    var_dump(in_array('three', $array));

    Работает он немного неожиданно — выдаёт true. Всё дело в том, что строка three приводится к типу элемента массива перед сравнением. В нашем случае интересно приведение к числу.

    Если такое поведение нежелательно, можно заставить сравнивать элементы ещё и по типу, передав третий параметр:

    $array = array(0, 'one', 'two');
    var_dump(in_array('three', $array, true));
    24 комментария
  4. PhpStorm 2.1.3

    30 августа 2011

    Релизнулся стабильный PhpStorm 2.1.3. Последние внесённые исправления не привносят новых возможностей, но довольно важны так как прилично улучшают поведение автодополнения.

    Кроме исправлений добавлена возможность отсылать статистику по использованию разных фич IDE в JetBrains. Включить можно в File → Settings → Usage Statistics. Настоятельно рекомендую т.к. на статистику скорее всего будут ориентироваться, выставляя приоритеты.

    Ждём новых EAP с вкусняшками.

    12 комментариев
  5. Команде переводчиков документации PHP требуется помощь

    1 августа 2011

    Документация PHP на русском несколько лет назад пропала с сайта PHP как неактуальная. Русскоязычная команда переводчиков хочет исправить эту ситуацию, но т.к. объёмы документации по PHP очень внушительны, сделать это небольшой группой сложно.

    Итак, если вы владеете PHP, английским и русским, то у вас есть шанс помочь PHP и войти в историю, заполучив попутно почту с доменом @php.net и OpenSource-лицензию на PhpStorm (конечно, при значительном вкладе в общее дело).

    Подробности описаны в двух постах на хабре:

    2 комментария
  6. Symfony 2.0

    28 июля 2011

    Релизнулся Symfony 2.0. От первого Symfony осталось, пожалуй, только название.

    Фреймворк похож на Struts из мира Java, требует PHP 5.3, довольно быстр и очень гибок. Основные интересности:

    • Состоит из отдельных пакетов (Bundle). Собирается и разбирается.
    • Повсеместно использует Dependency Injection. Естественно, с контейнером.
    • Призывает строить приложения с использованием HTTP по полной.
    • Присутствуют веб-инструменты для профайлинга и отладки.
    • Имеются консольные генераторы кода.
    • Документирован.

    Официальный анонс

    10 комментариев
  7. PhpStorm 2.1.2 RC build 107.403

    14 июля 2011

    С последнего поста про PhpStorm вышло приличное количество билдов и даже пара релизов, в которых кроме обычных багфиксов и улучшения производительности добавили много вкусненького:

    2.1.2 RC build 107.403

    2.1.1 получился немного глючным. По крайней мере, на моих проектах ему плохело и раз в день отваливался autocomplete. 2.1.2 RC пока ведёт себя очень прилично: ничего не отваливается, работает как часы. Оно и понятно: поработали над ошибками очень продуктивно.

    Билды, о которых я не писал

    21 комментарий
  8. urldecode и кодировки

    9 июля 2011

    Сегодня неожиданно много времени провёл за изучением одного из репортов в трекере Yii. Первопричина оказалась совсем не той и крылась, как это часто бывает, в несоблюдении стандартов. Вообще тонкости две:

    1. PHP-шный urldecode работает напрямую с октетами (теми, что %AB), так что интерпретация строки зависит от кодировки скрипта. В случае Yii это UTF-8.

    2. Хоть RFC 3986 в районе 16-ой страницы и говорит нам, что «data should first be encoded as octets according to the UTF-8 character encoding», но всё-же достаточно большое количество ПО использует другие кодировки. Чаще всего это ISO-8859-1.

    То есть после декодирования мы можем получить либо UTF-8, либо что-то ещё. Это ещё скорее всего будет ISO-8859-1.

    Ну и решение — свой urldecode:

    /**
     * Improved variant of urldecode.
     * Properly decodes both UTF-8 and ISO-8859-1 encoded URIs.
     *
     * @param string $str encoded string
     * @return string decoded string
     */
    private function urldecode($str)
    {
        $str = urldecode($str);
     
        // is it UTF-8?
        // http://w3.org/International/questions/qa-forms-utf-8.html
        if(preg_match('%^(?:
           [\x09\x0A\x0D\x20-\x7E]            # ASCII
         | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
         | \xE0[\xA0-\xBF][\x80-\xBF]         # excluding overlongs
         | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
         | \xED[\x80-\x9F][\x80-\xBF]         # excluding surrogates
         | \xF0[\x90-\xBF][\x80-\xBF]{2}      # planes 1-3
         | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
         | \xF4[\x80-\x8F][\x80-\xBF]{2}      # plane 16
        )*$%xs', $str))
        {
            return $str;
        }
        else
        {
            return utf8_encode($str);
        }
    }
    3 комментария
  9. Сравнение популярных PHP-фреймворков

    8 июля 2011

    CMS Magazine опубликовал собранную мной сравнительную табличку по PHP-фреймворкам. Данные очень субъективны и основаны на личном опыте, поэтому ранее я не акцентировал на ней внимания. Если у вас есть уточнения или что-либо кажется вам совсем не верным, напишите об этом в комментариях.

    Рассматриваем

    48 комментариев
  10. PHP 5.4 alpha1

    30 июня 2011

    После долгого безрелизья PHP сдвинулся с мёртвой точки. Команда выпустила вкусную альфа-версию 5.4, которая, кстати, является первой версией, выпущенной согласно releaseprocess RFC:

    А вот типизацию параметров для скалярных типов данных, похоже, выпилили совсем.

    Версия тестовая, так что использовать на production не стоит. О найденных ошибках отписываемся в php-qa@lists.php.net и в багтрекер.

    Да, в следующих альфах должна быть ещё куча вкусностей.

    5 комментариев