• Как работает fastcgi в php и phpfpm?

    @galliard
    fastcgi - что-то вроде сервера, который слушает определенный сокет. Он держит пул процессов (воркеров), которые принимают запросы, обрабатывают, возвращают ответ и ждут дальше запроса.


    Вот в этой фразе замени fastcgi на php-fpm и будет правильно. А fastcgi - это технология обработки запроса, по которой каждый воркер крутится в бесконечном цикле, обрабатывая в каждой своей итерации по одному запросу.
    Ответ написан
    3 комментария
  • Почему Yii/Yii2 не подходит для крупных проектов?

    @karminski
    Senior React.JS Developer
    У нас в компании 4 энтерпрайзных проекта на Yii2. В том числе CRM. В том числе и связь с телефонией, 1С, баг-трекером. Всё работает отлично, без нареканий. О каких "слабых" местах вы говорите? Прекратите читать - начните делать!
    Ответ написан
    7 комментариев
  • В чем косяк (полиморфизм)?

    @xfg
    В программировании несколько различных видов полиморфизма. Вам следовало уточнить, о каком из них идет речь. Собеседующий с вами конечно же не совсем корректен, так как простейшая форма полиморфизма в вашем примере все же присутствует. Другое дело, что в php под полиморфизмом обычно понимают полиморфизм подтипов. Выглядит так
    interface UnitInterface {
      public function setHp();
    }
    class Warrior implements UnitInterface {
      public function setHp() {...}
    }
    class Medic implements UnitInterface {
      public function setHp() {...}
    }
    
    class MainProgram {
      private $unit;
    
      public function __construct(UnitInterface $unit) {
        $this->unit = $unit;
      }
      public function run() {
        return $this->unit->setHp();
      }
    }
    
    echo (new MainProgram(new Warrior())->run();

    Идея в том, что конструктор класса MainProgram ничего не знает о конкретных реализациях ваших юнитов. Он знает только о том, что они должны удовлетворять интерфейсу UnitInterface. В будущем если у вас хорошо спроектирован интерфейс, то вы сможете заменить одну реализацию юнита на другую, не изменяя код внутри MainProgram. Таким образом, вы соблюдаете принцип открытости/закрытости из SOLID, который говорит, что классы должны быть открыты для расширения, но закрыты для изменений.
    Ответ написан
    1 комментарий
  • Как не коммитить изменения прав на файлы?

    denver
    @denver
    git config core.filemode false
    Ответ написан
    Комментировать