Задать вопрос
  • Что слушать PHP-FPM: сокет vs порт?

    CrazySquirrel
    @CrazySquirrel
    Сокеты работают чуть чуть быстрее, но в реалиях, быстро отваливаются, т.к. превышается допустимое количество открытых дескрипоторов.

    Юзаем порт, по скорости пррактически тоже самое.
    Ответ написан
    4 комментария
  • PHP и Gearman, что и как?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    у меня демоны — только воркеры
    Ответ написан
    1 комментарий
  • PHP и Gearman, что и как?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    Доброго :)
    Отвечаю на вопросы

    — чем концептуально отличается GearmanJob от GearmanTask и какой из них следует использовать для оформления отложенного задания?

    Job — это то, что поступает воркеру.
    Task — это то, что передает клиент

    То есть клиент кидает Task на сервер очередей, там два агрумента — имя ф-и и сериализованные данные (в виде строки).
    Если у воркера есть ф-я, указанная в Task, то есть он готов ее обработать, то он принимает задачу, а данные получает в виде Job.
    Извлекаются данные вот так (кусок реального кода):

    function create_campaign(GearmanJob $job){

    $rawData = $job->workload();
    $data = unserialize($rawData);


    А передаются на сервер вот так (я использую не Task, а чуть проще — просто doBackground)

    $gclient = new GearmanClient();
    $gclient->addServer('localhost');

    $new_offers = $client_db->select_new_offers();

    if(is_array($new_offers) AND count($new_offers) > 0){
    foreach($new_offers as $item){
    $data_for_gearman = array(
    'item' => $item,
    'client_class_name' => 'axxa',
    );
    $gclient->doBackground('new_offer', serialize($data_for_gearman));
    }
    }

    echo «Для добавления товаров на сервер очередей добавлено ».count($new_offers)." задач \n";
    Ответ написан
    1 комментарий
  • Нужна ли магистратура?

    Longes
    @Longes
    Если хотите однажды переселиться за границу — поступайте в магистратуру. Специалиста большинство стран приравнивают к бакалавру, а бакалавров в мире как грязи. Во всех остальных случаях заморачиваться нет смысла.
    Ответ написан
    Комментировать
  • Нужна ли магистратура?

    taliban
    @taliban
    php программист
    Лично я жалею что не полеш на магистратуру, но жалею лишь по одной причине: как круто бы звучало «магистр компьютерных систем и сетей». Других мыслей у меня о магистратуре совершенно не возникает, в то время я уже работал на полный день и всеравно знания были бы мимимальные.
    Ответ написан
    1 комментарий
  • Какое key-value хранилище лучше?

    denver
    @denver
    Нет лучшего NoSQL хранилища вообще, есть под задачи, у каждого плюсы и ограничения. Redis супербыстр когда оперативки больше чем данных, иначе он часто подгружает с диска и сводит на нет скорость (если это еще не переделали), хорош для очередей сообщений, списков (встроены сортировки), всякой мелкой инфы. memcache (не memcached) самый быстрый но не флашит на диск ничего (собсвенно оттого и). memcached простейший key-value с флашем (хорош для очередей сообщений и всяких счетчиков). У последних двух особенность multiget — взять много ключей за раз работает столько же сколько и один, так что хорош для хранения «превьюшек» данных по их id, когда сортированные списки хранятся где-то еще (в редис). MongoDB не просто key-value, в ней можно хранить целые документы (пост со всеми комментариями), некий компромисс между nosql и RDBMS. Hbase уже совсем замена RDBMS, один из самых быстрых когда речь идет о IO диска, соответственно эта NoSQL для постоянного хранения стопитцот миллиардов данных. Cassandra похоже конкурент Hbase, но аутсайдер, т.к. фейсбук/твиттер от нее отказываются ;) Про CouchDB и Riak я ничего особенного не слышал (может кто дополнит — мне интересно)
    Ответ написан
    12 комментариев
  • Лучший выбор для программирования кросс-платформенного приложения?

    На C++ писал сто лет назад, на С# не пишу, поэтому скажу про Java.

    Она соответствует вашим ожиданиям. В Java Swing (GUI библиотека) можно включать native look&feel. Так что приложение в каждой OS будет выглядеть как родное.

    Для Java существует огромное количество свободных библиотек. Гуглите Apache Commons
    Там есть поддержка очень многих полезных штук.

    Для работы с мультимедиа гуглите Java Media Framework

    Язык красивый и элегантный, хотя матёрые C++ программисты кинут в меня камень. И не один.
    Ответ написан
    5 комментариев
  • Выбор фреймворка?

    chetzof
    @chetzof
    Опыт работы:
    Zend Framework 1 — c 2010, но редко
    Kohana — c 2011, часто, проекты маленькой сложности
    YII — с 2011, пока два проекта средней сложности
    Symfony — 2011, с выхода стабильной версии, в марте запущен в продакшн первый релиз долгосрочного проекта

    Сейчас, заканчивая проект на symfony2, могу с уверенностью сказать что хоть мне Yii понравился, но возвращаться на него с Symfony2 не буду, я считаю что в ближайшем будущем темп будут задавать именно Symfony2 и Zend Framework 2, ну а остальные будут их догонять.

    Отдельные моменты которые мне особенно понравились в sf2:
    — Связка Symfony2 и Doctrine2, работа с базой данных никогда не доставляла такого удовольствия
    — Шаблонизатор Twig. Раньше я был приверженцем сторонников высказывания что PHP и сам отличный шаблонизатор, но теперь я понял насколько ошибался
    — ОЧЕНЬ гибкий и продвинутый генератор форм. К нему прилагается отличная интеграция с Doctrine2, буквально за пару строчек кода можно все сохранить в базу данных с надлежащей валидацией.
    — Очень гибкая архитектура, благодаря DIC можно поменять ну просто все что угодно. Модульность! Можно отключить что угодно, и подключить что угодно. По сути это набор компонентов, их можно использовать даже по отдельности.
    — Работает быстро. Меня этот аспект по началу беспокоил, так как не понимал как такая махина может работать быстро, но оказалось что в пакет включены production настройки, которые впечатляюще разгоняют систему. Symfony1 в данном случае и есть причина мнения что Symfony медленный, Symfony2 это совсем другой framework, надежный и быстрый.
    — PHP 5.3. и скорый переход на PHP 5.4
    — Исходники модулей и ядро расположено на github. Все разработка идет там. Очень удобно следить за изменениями. Я как пользователь git-а очень одобряют использование именно этой VCS
    — Дофига модулей (бандлов) от сообщества, это всего за пол года с момента релиза! Простой но удобный package manager который обновляет ядро и модули автоматический.
    — Хорошая документация
    — Очень продуманная структуризация проекта
    — Level up в плане поднятия опыта, много новый решений

    Также замечу что, код очень понятный и чистый, вровень с ZF, лучше и понятнее код только у Kohana. Хуже из всех код из четверки с которыми я работал у Yii… ну как, не хуже, просто своеобразный, не совсем по стандартам, я так и не смог привыкнуть к нему.

    Что не очень хорошо:
    — Порог вхождение выше среднего, «чувствовать» систему я начал только через месяц
    — Документация могла бы быть более подробной, сейчас кстати трудится сообщество над этим
    Ответ написан
    Комментировать
  • Выбор фреймворка?

    ataraev
    @ataraev
    Ruby, Go
    Symfony2 + Doctrine или Doctrine + CodeIgniter
    Я бы посоветовал остаться именно на то что хорошо знаете, и вообще почитать больше про архитектуру высоко нагруженных приложений, паттерны проектирование, проектирование структур баз данных. Это вам больше поможет чем выбор более простого или сложного фреймворка, вы на любом из них сможете реализовать хорошее приложение. Советую прочитать «Архитектура корпоративных программных приложений» Мартин Фаулер
    Ответ написан
    3 комментария
  • Выбор фреймворка?

    MpaK999
    @MpaK999
    Буду!
    Хм, оставайтесь на CodeIgniter раз его так хорошо знаете. А нужен ORM (зачем он вам если проект выско нагруженный???) объектный у вас два пути:
    1. Расширить ваши модели через MY_Model сделав метод выдачи результата в виде нужного вам объекта, который ведёт себя как Iterator так и ArrayAccess это не сложно.

    2. Подключить любой другой ORM от Doctrine, Propel, PHP-ActiveRecord всё это так же просто делается и есть туториалы в сети.

    Имхо, перед написанием проекта не стоит начинать метаться в поисках лучшей технологии, надо брать тот инструмент в чем вы спец.
    Ответ написан
    Комментировать
  • Сайт на JAVA с использованием Spring Framework?

    @dos_88
    Для начала можно это — Spring MVC step-by-step
    Ответ написан
    Комментировать
  • Как удалить Google Ответы?

    @Dzen_Marketing
    За прошлое надо отвечать.
    Ответ написан
    Комментировать
  • Как удалить Google Ответы?

    aligeri
    @aligeri
    Получается, что нельзя. Да и в условиях вот что: "...Google shall have the
    perpetual, irrevocable, non-exclusive right to use, reproduce, modify,
    edit, translate, publish, perform, display, post, transmit and
    distribute («Use») your questions, comments, and/or the corresponding
    answers without compensation to you, anonymously or in the aggregate,
    for internal or external purposes, alone or as part of other works in
    any form, media, or technology, whether now known or hereafter
    developed and to sublicense such rights..."
    Ответ написан
    Комментировать
  • git + bug tracking + code review

    cutwater
    @cutwater
    По пунктам 1, 2 могу рекомендовать redmine.
    Гибкий в настройке трекер, необходимый функционал добивается плагинами.

    По пункту 3 мы использовали reviewboard, но он не интегрируется redmine.
    Для redmine есть code review плагин, сам не пользовался.

    Попробуйте обкатать его, на сегодняшний день это одно из наиболее функциональных решений.
    Ответ написан
    2 комментария
  • Книга по программированию, оказавшая наибольшее влияние

    @fllln
    Code Complete, на 1/6 части суши также известная как Совершенный Код.
    Ответ написан
    Комментировать
  • Каким же способом реализовывать форки в PHP?

    AotD
    @AotD
    PHP, Redis, Postgresql
    fork из pcntl_fork так же нестабилен как и обычный Сишный форк. Ни больше ни меньше.
    В дочерних процессах контролируем падение по любой ошибке, в том числе ошибке интерпретатора, корректно завершаем процесс с кодом возврата.

    Код возврата анализируем в родительском процессе, чтобы определить сдох хомяк естественной смертью или его порвало от капли никотина.

    Можно использовать ум предшественников и воспользоваться готовыми решениями: phpdaemon.net/
    При должной сноровке и отсутствии боязни пересборки php эта штука не только будет префоркать нужное количество воркеров, но и делать горячую замену кода прямо во время выполнения.

    Или nanoserv.si.kz/ — чуть проще, понятней для начала, но для 70% задач и его хватит с головой
    Ответ написан
    Комментировать