Pull to refresh
0
0
Михаил Буйлов @mipxtx

User

Send message
https://www.youtube.com/embed/e-BUQR1jyiM
Soft Mocks дают нам гарантию, что ничего не сломается при переходе на PHP 7.1

Это далеко не факт. В последних версиях php (5.3, 5.4, 5.5, 5.6) добавлялись новые языковые конструкции. Вот под них надо дописывать парсер, возможно логику работы самого механизма мока.
А в чем были проблемы? Мы, кроме сегфолтов и кеширования вызовов ни на что не наткнулись.
Давольно странный вопрос, если изменится апи, то да. Но есть ощущение, что следущая версия, в которой так меняется апи выйдет еще не скоро.
А что сами не сделали? Таск треккер говорит — затрачено 67 часов. Не очень-то и эпично
А мы тем временем uopz допилили до рабочего состояния.
Я не знаю, может для совместимости в windows, в котором нет /tmp, tar, gz а есть php extension
Да, мы хотели сделать свои пакеты. Без метаинформации
Но если он не закачивает в память пакеты, для чего ему 350 мегабайт из теста?
Я бы рекомендовал перед этим сделать ini_set('memory_limit',0)
Скорее всего, можно почувствовать что-то при обновлении очень больших пакетов, которые вместе не влезут в memory_limit.
Ура! Наконец-то хоть кто-то начал задавать правильные вопросы. Я отвечу на второй, на мой взгляд он самый важный.
Композеру нужно столько памяти, потому что он туда(в память) закачивает скачанные пакеты (.tar.gz). Затем он там туда же(да да, в память) их распаковывает в поисках composer.json и на его основе скачивает зависимые пакеты(опять же в память).
Мы пытались сделать пакет размером в 700МБ. Мы падали по memory_limit в 2G.
Дело не а PHP и его GC. Дело в самом композере
я нагуглил презентацию Аверина из Badoo: www.slideshare.net/HDConf/handlersocket-39967288
Ссылки на исходники я там не нашел, но нашел исходники в его архиве со слайдами:
averin.ru/slides/CodeFest%202013%20%d0%b8%20%d0%a0%d0%98%d0%a2%202013/HandlerSocket.php.src
averin.ru/slides/CodeFest%202013%20%d0%b8%20%d0%a0%d0%98%d0%a2%202013/Sharded%20handlerSocket.php.src

Похоже что они тоже используют PHP реализацию. И 3мс на запрос из презентации это подтверждают.
3мс — это очень много. у нас за 6мс вынимаются данные обычными SQL запросами. Если сравнивать с мемкешом (примерно 1мс), то разница в 3 раза становится критична.

Мы используем HS для проверок авторизации и получении еще некоторой системной информации с 8 слейвов. При нагрузке примерно в 15к rps мы имеем среднее время ответа порядка 0.7мс в самое загруженное время и 0.4мс ночью. Используем модуль code.google.com/p/php-handlersocket/

если еще немного постараетесь, то да ;)
А что конкретно вас смутило?
Почта нужна для того, чтобы отправить вам приглашение на собеседование. Друзья — для того чтобы показать их рейтинг.
Все остальное видимо приехало после очередного изменения настроек прав приложений.
Все правильно. В базе тоже есть выбросы около балов кратных 5.
Тест давольно древний. в 2011 запустили FB версию. Сам тест появился намного раньше. Его неоднократно переделывали — несколько раз менялось максимальное колличество баллов.
Но 241 неплохой результат :)
К сожалению, в мануале ничего не написано про механизмы наследования. О том что методы при наследовании копируются. Пока это мои догадки. Хочется быть уверенным.
Я надеялся на ссылки на какую-нибудь статью, с описаниями механизмов. Но, похоже, придется лезть в код и самому писать.
Скажите пожалуйста: при наследовании наследства (извините за тавтологию), вашей горячо любимой троюродной прабабушки, копируется ли оно, или нет?
Так вот, к чему это я? К тому, что каждый понимает программные абстракции по своему. Аналогии ложны, а вашему принтеру стоило быть более экономным, чтобы сберечь леса. Истинным, в данном случае, может быть только мануал. Мне хотлось узнать, где можно почитать, как внутри устроено наследование и как оно превращается в копирование
хочется понять, почему B::i()!=C::i() когда метод один. Ну и зачем так сделано
ОК. пойдем дальше
class A {
    public static function i(){
        $f = function($name){
            static $i;
            return $i? $i: $i = new $name;
        };
        return $f(get_called_class());
    }
    function say(){ echo get_class($this) . "\n"; }
}

class B extends A{}
class C extends A{}

B::i()->say();
C::i()->say();

B
C


function j($name){
    static $i;
    return $i? $i: $i = new $name;
}

class A {
    public static function i(){
        return j(get_called_class());
    }
    function say(){ echo get_class($this) . "\n"; }
}

class B extends A{}
class C extends A{}

B::i()->say();
C::i()->say();

B
B


правильно ли я понимаю, что статические переменные внутри функций не имеют ничего общего с статическими переменными внутри методов класса? иначе что за static binding происходит внутри функции?
Я хотел лишь узнать, почему при вызове одного и того же метода статическая переменная внутри этого метода «теряет» свое значение.
Я хотел сказать, что метод то один, почему статических перемнных стало две?
Это же не свойство класса, а статическая переменная внутри метода?

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity