Задать вопрос
Местоположение
Россия, Санкт-Петербург и область, Санкт-Петербург

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (35)

Лучшие ответы пользователя

Все ответы (50)
  • Какой лучший отладчик на PHP?

    Aco
    @Aco
    Заклинатель кода
    1. xdebug + IDE = отличная пошаговая отладка
    2. xdebug + profiler + (kcachegrind или wincachegrind) = анализ затыков в производительности
    3. memtrack — поиск утечек памяти в кронах/демонах
    4. DTrace + PHP = анализ «how it work» и каждого чиха скриптов
    5. strace -p PID — анализ syscall-чихов скриптов.
    6. APD — слабый конкурент xdebug, но имеет в себе возможности memtrack. Плохо интегрируется с IDE, однако имеет консольные интерфейсы (см. usage).
    7. wireshark для анализа сетевого трафика, протоколов и т.д. (tcpdump + ssh pipe + wireshark = слежка за трафиком с боевого сервера)
    8. можно взять runkit и заменять php функции на свои (или делать прокси) для анализа проходящих данных/генерации исключительных данных/блокировки изменения данных.
    9. Централизированный syslog позволит вовремя реагировать на проблемы.

    Конечно, часть не в тему, но меня уже не остановить!
    Ответ написан
    3 комментария
  • PHP - Как вернуть управляемый контент при критической ошибке PHP (E_ERROR, E_PARSE)?

    Aco
    @Aco
    Заклинатель кода
    register_shutdown_function(function () {
       $error = error_get_last();
       if ($error && ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR)) {
           if (strpos($error['message'], 'Allowed memory size') === 0) { // если кончилась память
               ini_set('memory_limit', (intval(ini_get('memory_limit'))+64)."M"); // выделяем немножко что бы доработать корректно
               Log::error("PHP Fatal: not enough memory in ".$error['file'].":".$error['line']);
    	} else {
               Log::error("PHP Fatal: ".$error['message']." in ".$error['file'].":".$error['line']);
            }
            // ... завершаемая корректно ....
        }
    })
    
    


    Ловит так же падения при отсутствии свободной памяти, ошибки парсинга, и прочего
    Ответ написан
    17 комментариев
  • Применение побитовых операторов в PHP и Javascript?

    Aco
    @Aco
    Заклинатель кода
    У меня в проекте есть объект имеющий 42 различных состояния, на подобии сброшен, завершился с ошибкой, процессе того, в процессе сего… и т.д. На каждое состояние выделен 1 бит, таким образом все возможные состояния вмещаются в одно свойство объекта. Так вот, есть много мест где мне надо решать что делать опираясь на эти флаги, для примера сравните 2 куска кода.
    if($this->_sock && !empty($this->_opts["keep-alive"]) && $this->_is_opened && $this->_step == "proceed") {
    }
    

    или
    if($this->_state & self::CAN_PROCEED) {
    }
    

    таким образом можно вместо кучи свойств и проверок ключей у массивов/объектов делать одну битовую операцию
    Ответ написан
    4 комментария
  • Что нужно знать для backend разработки?

    Aco
    @Aco
    Заклинатель кода
    Есть хороший список базовых технологий и знание куда копать: https://github.com/bzick/oh-my-backend#oh-my-backend

    Сам язык там упоминается вскользь и без определенного указания предпочитаемого языка так как по факту толковому бекендеру уже всё равно на каком языке писать.
    Ответ написан
    Комментировать
  • Websockets: где работает?

    Aco
    @Aco
    Заклинатель кода
    Для кроссбраузерной работы WebSocket лучше использовать обвёртку WebSocket.js. там где нет ws используется флеш как прокси ws (правда добавляет гемор с flashpolicy, так как не у всех открыт порт 843, то флешка будет ломится и на 80). А вообще WS это общий принятый стандарт в RFC и в спецификации HTML5. Выпиливать его уже никто не будет, только дальше развивать.
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (2)