Soft Mocks дают нам гарантию, что ничего не сломается при переходе на PHP 7.1
Это далеко не факт. В последних версиях php (5.3, 5.4, 5.5, 5.6) добавлялись новые языковые конструкции. Вот под них надо дописывать парсер, возможно логику работы самого механизма мока.
Ура! Наконец-то хоть кто-то начал задавать правильные вопросы. Я отвечу на второй, на мой взгляд он самый важный.
Композеру нужно столько памяти, потому что он туда(в память) закачивает скачанные пакеты (.tar.gz). Затем он там туда же(да да, в память) их распаковывает в поисках composer.json и на его основе скачивает зависимые пакеты(опять же в память).
Мы пытались сделать пакет размером в 700МБ. Мы падали по memory_limit в 2G.
Дело не а PHP и его GC. Дело в самом композере
Похоже что они тоже используют 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 неплохой результат :)
К сожалению, в мануале ничего не написано про механизмы наследования. О том что методы при наследовании копируются. Пока это мои догадки. Хочется быть уверенным.
Я надеялся на ссылки на какую-нибудь статью, с описаниями механизмов. Но, похоже, придется лезть в код и самому писать.
Скажите пожалуйста: при наследовании наследства (извините за тавтологию), вашей горячо любимой троюродной прабабушки, копируется ли оно, или нет?
Так вот, к чему это я? К тому, что каждый понимает программные абстракции по своему. Аналогии ложны, а вашему принтеру стоило быть более экономным, чтобы сберечь леса. Истинным, в данном случае, может быть только мануал. Мне хотлось узнать, где можно почитать, как внутри устроено наследование и как оно превращается в копирование
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 происходит внутри функции?
Я хотел лишь узнать, почему при вызове одного и того же метода статическая переменная внутри этого метода «теряет» свое значение.
Я хотел сказать, что метод то один, почему статических перемнных стало две?
Это же не свойство класса, а статическая переменная внутри метода?
Это далеко не факт. В последних версиях php (5.3, 5.4, 5.5, 5.6) добавлялись новые языковые конструкции. Вот под них надо дописывать парсер, возможно логику работы самого механизма мока.
Но если он не закачивает в память пакеты, для чего ему 350 мегабайт из теста?
Композеру нужно столько памяти, потому что он туда(в память) закачивает скачанные пакеты (.tar.gz). Затем он там туда же(да да, в память) их распаковывает в поисках composer.json и на его основе скачивает зависимые пакеты(опять же в память).
Мы пытались сделать пакет размером в 700МБ. Мы падали по memory_limit в 2G.
Дело не а PHP и его GC. Дело в самом композере
Ссылки на исходники я там не нашел, но нашел исходники в его архиве со слайдами:
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/
Почта нужна для того, чтобы отправить вам приглашение на собеседование. Друзья — для того чтобы показать их рейтинг.
Все остальное видимо приехало после очередного изменения настроек прав приложений.
Тест давольно древний. в 2011 запустили FB версию. Сам тест появился намного раньше. Его неоднократно переделывали — несколько раз менялось максимальное колличество баллов.
Но 241 неплохой результат :)
Я надеялся на ссылки на какую-нибудь статью, с описаниями механизмов. Но, похоже, придется лезть в код и самому писать.
Так вот, к чему это я? К тому, что каждый понимает программные абстракции по своему. Аналогии ложны
, а вашему принтеру стоило быть более экономным, чтобы сберечь леса. Истинным, в данном случае, может быть только мануал. Мне хотлось узнать, где можно почитать, как внутри устроено наследование и как оно превращается в копированиеправильно ли я понимаю, что статические переменные внутри функций не имеют ничего общего с статическими переменными внутри методов класса? иначе что за static binding происходит внутри функции?
Я хотел сказать, что метод то один, почему статических перемнных стало две?
Это же не свойство класса, а статическая переменная внутри метода?