Ответы пользователя по тегу PHP
  • Вопросы по быстродействию + Какую базу лучше всего использовать?

    akalend
    @akalend
    программирую
    мы используем Кассандру для хранения статистики
    ее достоинства - хорошо масштабируема, отказоустойчива
    проста в использовании именно в целях статистики
    быстра на запись, что очень важно для разных партнерских и мизерных программ
    недостатки - жрет много места (больше чем прогнозировали)
    нагрузка на сеть более 1,5М в сутки

    если у вас нагрузка в разы меньше, то достаточно и РСУБД (мускул, посгрес), но если соизмерима, то рано или поздно вы упретесь в проблему масштабирования
    Ответ написан
    Комментировать
  • Что использовать nginx, php-fpm или с++ для разработки web server ориентированного приложения?

    akalend
    @akalend
    программирую
    по поводу деплоймента на РНР:
    1) распространять приложение в виде упаковонного файла phar
    2) сделать служебную WEB страницу, которая будет выполнять удаленную установку приложения:
    - создавать директорию version_num
    - записывать в неё твоё приложение my_proga.phar
    - переключать линку с version_num_old на version_num

    как вариант еще можно поднять виртуальный хост test.webapp, переключение хостов можно делать симлинками.
    3) твои действия из дома/офиса:
    - устанавливаем в служебном интерфейсе новый номер версии
    - закачиваем новый файл my_proga.phar
    - нажимает кнопку инсталл, для первого запуска
    - проверить как поднялось на тестовом хосте
    - нажать кнопку деплой для переключится линка на основной хост
    - и смотрим как все прекрасно на основном хосте
    Ответ написан
    Комментировать
  • Какой кэш посоветуете использовать для PHP-FPM?

    akalend
    @akalend
    программирую
    сколько кешеров, столько и мнений :)

    APC — он стабильнее XCache.
    Когда мы перешли на 5.3, а APC под 5.3 еще не было, то поставили XCache и столкнулись с утечками памяти. Память под процессы php-fpm росла как на дрожах. Возможно это уже устранили, но неприятное ощущение осталось.
    Ответ написан
    Комментировать
  • Куда именно память утекает в PHP?

    akalend
    @akalend
    программирую
    >Очень уж не хочется рефакторить ~7k строк чужого кода.
    мне тоже много чего не хочется…
    а вот придется…

    все утечки от плохой или слишком хорошей и очень правильной архитектуры
    Ответ написан
    Комментировать
  • Куда именно память утекает в PHP?

    akalend
    @akalend
    программирую
    в дополнение к вышесказанному есть memtrack php.net/manual/ru/book.memtrack.php
    как показывает практика память утекает конструкции в циклах: while ( $row = mysql_fetch_row() ) { $myArr[] = $row; }
    или в создании мега-крутых $superObject — который содержит в себе кучу разных объектов

    и еще мы забываем или просто не знаем, что есть конструкция unset
    Ответ написан
    1 комментарий
  • FPM в Debian (dotdeb)?

    akalend
    @akalend
    программирую
    нет, но он может понадобится просто для отладки
    Ответ написан
    1 комментарий
  • CMS + noSQL

    akalend
    @akalend
    программирую
    что мешает воткнуть свой плагин?

    github.com/akalend/quickly CMF — поддерживает MongoDb
    Ответ написан
    6 комментариев
  • Memcached и теги

    akalend
    @akalend
    программирую
    Хочется использовать Memcached с её мульти-гетами и мульти-сетами, но останавливает отсутствие тегирования.


    активно и давно использую мемкеш, но так и не понял а зачем нужно теггирование?
    Ответ написан
  • На чём писать демона

    akalend
    @akalend
    программирую
    php+php_libevent — самый оптимальный вариант

    если уж очень нужна происводительность демона, то С/С++
    масса примеров в сети
    Ответ написан
    2 комментария
  • PHP - как сделать толковый кэш?

    akalend
    @akalend
    программирую
    1) 30-40К это не такая уж и большая посещаемость, у меня сервак выдерживал 65К
    используй мемкеш однозначно, в нем, например, можно хранить не только контент, но и информацию об обновление и лишний раз трогать БД
    ( Статистика количества просмотров новости. При каждом посещении продолжать делать «UPDATE `views` = `views` + 1»).
    эту инфу я бы точно держал в памяти. У меня в одном муз проекте вся статистика скачиваний за день (200-250К) хранится в мемкеше. А раньше дергалась БД (именно на UPDATE x=x+1) и сервак не слабо тормозил.

    2) как уже советовали выше — если хранить контент в мемкеше, то можно настроить nginx так, чтоб он отдавал его напрямую не дергая бэкенд

    3) если есть Аппач — то его в топку, используй php-fpm, ну я надеюсь, что всякие акселлераторы тоже используются.

    есть куча статей на Хабре как можно улучшить производительность
    Ответ написан
    Комментировать
  • Как организовать ступенчатую модель комментирования а-ля "Хабр" в связке PHP + MySql?

    akalend
    @akalend
    программирую
    Рекурсия в БД (запрос в запросе) — это смерть проекту. Я вывожу все дерево одним запросом (по topic_id упорядочивая по времени) и строю дерево уже непосредственно в цикле обработки данных.
    Ответ написан
    Комментировать
  • Выборка данных из базы через MySQLi и подготовленные выражения?

    akalend
    @akalend
    программирую
    Новое расшрение дает новые возможности. Вы выбрали режим «подготавливаемый SQL», т.е. при первом выполнении компилится SQL выражение и в скомпилированном виде хранится в кеше SQL запросом. Это позволяет экономить время на компиляцию и увеличивает производительность.
    Если Вы изменили структуру таблицы, то Ваша откомпилированноое выражение уже не подойдет под новую структуру. Отсюда и ошибка. Вывод:
    либо задаем все поля, либо не используем «подготавливаемые выражения»
    Ответ написан
    Комментировать
  • Вешается php-fpm?

    akalend
    @akalend
    программирую
    Оптимальное кол-во деток PHP определяется практически,
    теоретически оно должно быть х2 деток nginx.

    Посмотри время затраченное на отработку одного скрипта.
    Если скрипты тяжелые, а от этого надо избавляться как можно скорее, то деток PHP должно быть равно с запасом соотношению отработки скрипта и частоте приходящих запросов.
    Ответ написан
  • Обьявление переменных с использованием фигурных скобок?

    akalend
    @akalend
    программирую
    > if(!${0}) log('Writing failed');
    Идиоты код писали
    Прошли те времена, когда экономили байты.

    сейчас есть байт-кешеры (акселераторы), которые кешируют опкод, по этому — это экономия не эффективная.

    код должен быть понятен прежде всего программисту, а потом уже машине.
    Ответ написан
    1 комментарий
  • Фотогалерея PHP?

    akalend
    @akalend
    программирую
    если просто выложить:
    google picassa — очень удобно и просто пользоваться

    а РНР-скриптов фотогаллерей полно,
    посмотрел парочку (самых рейтинговых) но они мне как-то не очень нравятся
    чего хочет-ся там нет, а переделывать — ток проще свое написать.
    Ответ написан
    Комментировать
  • Когда оправдано использование публичных полей в PHP?

    akalend
    @akalend
    программирую
    Классическое ООП не рекомендует использование публичных полей. Рекомендуется доступ к данным организовывать через геттеры и сеттеры (это не РНР шные __get & __set, а методы обертки getName(), setName()...).

    Можно публичные поля использовать там, где не требуется проверка данных, где используются простые объекты данных. Мы же используем хешмассивы[ $ob = array(); $ob[id]=1;… ] как структуру данных. Можно и даже правильнее вместо них использовать объекты: $ob = new StdClass(); $ob->id = 1; $ob->name=… У нас, в этом случае все поля получаются публичными.

    Не целесообразно в данном случае писать специальный класс, и на каждое поле свой геттер и сеттер, если функция данного объекта — это лишь только хранение/передача информации.
    Ответ написан
    Комментировать
  • Выбор быстрейшего php фреймворка?

    akalend
    @akalend
    программирую
    Насколько быстро генерируется страница с блоком новостей, меню и неким текстовым блоком самым быстрым из существующих и знакомого вам PHP-фреймворком?
    при запросе по ключу — ориентируемся на 20 mc, у меня сама стр формируется за 5мс, остальные 15-20мс на формирование доп блоков.
    Ответ написан
    3 комментария
  • Выбор быстрейшего php фреймворка?

    akalend
    @akalend
    программирую
    Веду разработку своего php-фреймворка, главными целями которого является компактность движка, удобство его использования при разработке сайтов на нем, и естественно, скорость отдачи страниц.
    Каждый фреймворк представляет собой универсальность.
    При зарработки универсальных решений — мы что-то теряем. Чем решение универсальней, тем оно менее производительнее. По этому при разработке велосипеда ответь на вопросы:
    — какие основные задачи я буду на нем решать
    — на каких хостингах он будет крутится
    — какие доп фичи я смогу использовать
    — что я могу еще подточить под свое решение.

    Чем большими фичами я могу манипулировать, тем более производительную систему я смогу сконструировать.

    В качестве примера могу посоветовать свой велосипед
    Он заточен под определенные технические решения, и его скорость превосходит ZF в 4 раза при отключенном кешировании и акселерировании на олднотипных малоресурсных запросах. С другими фреймворками в силу их незнания я не сравнивал. Основная фишка описана в блоге «Высокая производительность».

    В качестве совета могу подсказать: чтоб достичь эффект производительности необходимо разрабатываем систему так, чтоб кол-во обращений к БД было минимальным, а лучше чтоб его не было вообще. Кал-во джоинов сводим к нолю, Не боимся сджоинивать и сортировать на клиенте, не боимся деноморолизации, так как стоимость быстрой отдачи стр дороже, чем стоимость дисков. Ищем альтернативы. Практика показывает, все неуспешные (тормозные) проекты — это плохо спроектированная БД и обращения к ней.
    Ответ написан
    3 комментария