Pull to refresh
  • by relevance
  • by date
  • by rating

Как переход со стека Nginx+FPM на Swoole увеличил производительность PHP API на 91%

PHP *Nginx *Laravel *

Читая PHP-дайджест, мы в Evapps наткнулись на интересную новость — вовсю идёт голосование по [RFC] Fibers. В двух словах — это попытки внести немного асинхронности в монолитно-синхронное до сих пор выполнение PHP-кода. А там, глядишь, и до многозадачности недалеко. Но это пока лишь мечты. А в реальности, как оказалось, существует сервис, который УЖЕ создал многопоточность в PHP. Называется он Swoole. Кстати, в новом пакете Laravel — Laravel Octane — под капотом будет использоваться именно этот сервис, Swoole. Об этом рассказал создатель Laravel Тейлор во время презентации пакета.

Рассказывать о Swoole с нуля кажется бессмысленным, так как уже есть люди, которые не просто покрутили сервис на тестовом сервере, но и перевели на него свой проект, получили отличный результат, о котором и отчитались. Хотим с вами поделиться этим отчётом. Представляем перевод статьи основателя компании Appwrite Элдада Фукса Moving From Nginx+FPM to Swoole Has Increased Our PHP API Performance by 91%.

Читать далее
Total votes 7: ↑7 and ↓0 +7
Views 6.3K
Comments 3

PHP — Test Driven Development

Lumber room
Сегодня к нам на фирму приезжал Себастиан Бергманн, разрабочик PHPUnit, представлял сию полезную вещь и кроме того test driven software development в целом. Интересно как веб-разработчики относятся к такому подходу? Дело в том, что наша фирма, вернее портал стоит на пороге полностью новой разработки с нуля, старая функциональная система не справляется просто с 3 миллионами юзеров, да и новшества писать сложно, а уж разобраться где что для несведущего — дремучий лес. Решили использовать Zend Framework, как основу ну и заодно уж всё делать по модному — Unit Tests, Pair «extreme» programming… Планы наполеоновские, времени марктинг даёт до рождества. Завтра приедет представитель от Zend, выслушивать пожелания и отвечать на вопросы.
За обедом Бергманн рассказывал забавные факты о гигантах PHP олимпа. Сейчас он работает (всего один день в неделю) на eZ Systems в Норвегии, участвует в интеграции PHPUnit в новую Zend Studio Neon, которая будет основываться на PHP Eclipse и принесёт с собой кучу полезных фич, типа встроенного JS дебуггинга и т.д.
Total votes 8: ↑7 and ↓1 +6
Views 1.2K
Comments 12

PHPUnit Developer

Lumber room
У нас на фирме в гостях сегодня Sebastian Bergmann — автор PHPUnit проводит курс юного test driven разработчика. Если вдруг кто-то давно хотел задать ему вопрос, пишите.
Total votes 4: ↑4 and ↓0 +4
Views 929
Comments 7

Переезд с SimpleTest на PHPUnit

Lumber room
Предыстория: одна из критических частей кода проекта покрыта юнит тестами основаными на фреймворке SimpleTest. В связи с переходом на PHPUnit необходимо было адаптировать существующие тесты под новый тестовый фреймворк.
Причем необходимо было оставить работающими тесты как в режиме SimpleTest, ну и заставить их работать в PHPUnit. Код самих тестов, естественно, один и тотже.

Было выделено три ключевых момента где есть различия между SimpleTest и PHPUnit:
  • 1. Запуск тестов
  • 2. Используемые методы проверки и наследование
  • 3. Обработка результатов тестирования

Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Views 702
Comments 6

Юнит-тестирование в PHP

PHP *
Язык PHP очень легок для изучения. Это, а так же обилие литературы «Освой _что_угодно_ за 24 часа» породило большое количество, мягко говоря, некачественного кода. Как следствие, рано или поздно любой программист, который выходит за рамки создания гостевой книги или сайта-визитки сталкивается с вопросом: «а если я здесь немножко добавлю, все остальное не ляжет?» Дать ответ на этот вопрос и на многие другие может юнит-тестирование.

В самом начале хочется оговориться — здесь речь не будет идти о TDD и методологиях разработки ПО. В данной статье я попробую показать начинающему PHP-разработчику основы использования модульного тестирования на базе фреймворка PHPUnit
Начнем?..
Total votes 97: ↑90 and ↓7 +83
Views 168K
Comments 90

PHPUnit и его Database Extension. Беглый взгляд

PHP *

Пространное и многословное вступление


Уже чуть более года в проекте где я работаю ходят разговоры о модульном тестировании. Помимо разговоров неоднократно делались попытки превратить эти разговоры в жизнь. Все попытки на данный момент закончились тем, что ни один ранее написанный модульный тест не прогоняется в процессе разработки. Все они лежат мертвым кодом в недрах нашей системы. Представили такой себе постсоветский индастриэл? Торчащие колонны из земли, ржавая арматура на фоне хмурого неба:)

Некоторые тесты не используются ввиду того что тестируемый функционал так и не вышел в продакшн и на годы осел в файлах и директориях, а некоторые просто всех утомили тем хаосом который там был сотворен. Вся та произведенная нами на свет энтропия стала результатом нашей некомпетентности в модульном тестировании и не системного подхода к их внедрению. В наших тестах нарушены практически все принципы модульного тестирования. Начиная с того что они зависят один от другого заканчивая тем что в них можно увидеть разбухшие от подготовительной работы тестовые методы пестрящие sql-синтаксисом и многое другое… Плюс ко всему выше названному, почти все предыдущие попытки внедрения модульного тестирования были в большей мере самодеятельностью не особо санкционированной заказчиком, потому как только происходил затык тесты бросались и функционал начинал писаться в отрыве от тестов, и стоит ли говорить о том что к дописыванию тестов возвращаться не собирался никто.

Читать дальше
Total votes 26: ↑23 and ↓3 +20
Views 6.6K
Comments 29

PHPUnit+Netbeans

PHP *
Здравствуйте.

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

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

В крупных конторах для этого есть специальные люди, которые занимаются тем, что пишут unit-тесты.

Меньшие конторы, фрилансеры этим грешат, да и на маленьких проектах это не всегда нужно. Согласитесь, если класс на 100 строк, то писать тесты на 200 строк кажется лишней тратой времени.

Тем не менее, не буду вдаваться в подробности кому надо кому нет.

Я хочу показать как можно клево тестировать код на NetBeans с удобным GUI.
Читать дальше →
Total votes 69: ↑58 and ↓11 +47
Views 9.6K
Comments 40

JetBrains WebIDE — публичная сборка #500

PHP *
Квест «идеальное IDE для PHP» продолжается :) За прошедшую с предыдущей сборки неделю стали доступны две наиболее востребованые фичи — PHPUnit и FTP, ну и конечно мы постарались исправить как можно больше ошибок.

IDE
— начальная версия поддержки удаленных хостов — пока что только FTP upload. (Планируется: открытие удаленного проекта, автосинхронизация, SFTP/SSL/всякие cloud storage). Находится в меню Settings — Deploy&Run.
— Новые удобные закладки (F11)

PHP
— начальная версия поддержки PHPUnit (пока только локальный запуск)
— добавлено выведение типов для переменной в «foreach(...)», элемента массива «array[...]» и тернарного оператора "?:"
— добавлены поиск использований (Ctrl-Alt-F7) и переименование (Shift-F6) для глобальных переменных
— исправлены поиск использований и переименование для статических членов класса
— исправлены различные ошибки форматирования кода и комментариев

Загрузка Анонс

FTP PHPUnit
Total votes 51: ↑41 and ↓10 +31
Views 1.1K
Comments 117

Практика внедрения PHPunit

Website development *
Уже достаточно сказано о пользе автоматизированного тестирования (например, тут и тут), но до сих пор многие так и не пишут тестов. Одна из причин, как мне кажется, в том что предлагаемые способы автоматизации тестирования сложнее чем необходимо для большинства случаев. Сегодня я хочу рассказать о том как это сделано у нас.

Читать дальше
Total votes 14: ↑10 and ↓4 +6
Views 8.3K
Comments 5

JetBrains WebIDE — публичная сборка #701 / немного о ZendCon'09 / кое что о неочевидных возможностях

PHP *
И снова «идеальное IDE для PHP» от JetBrains ^) За прошедшее с предыдущей сборки время мы успели обзавестись официальным сайтом, посетить ZendCon'09 и наконец заняться обещанной оптимизацией производительности. Нашлось время и на несколько новых фич. Пока качается билд загляните под кат — кроме обычных подробностей там будет пара слов о ZendCon и о уникальных функциях платформы/WI.



Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Views 1.2K
Comments 200

phpUnderControl 0.5.0

PHP *
Translation
phpUnderControl нацелен упростить интеграцию CruiseControl и PHP сделав ее как можно проще. Он объединяет лучшие инструменты в сочетании с простой установкой. Так же позволяет просматривать отчеты от РНРunit, PHP_CodeSniffer и PHPDocumentor. ©

Если ваш опыт работы с PHP менее года или же если вы при отладке программ используете var_dump() / printr() и считаете что это единственно верный вариант — проходите мимо, все оскорбленные могут смело идти прямо в профиль и вымещать злобу на карме. Если вы действительно хотите узнать что это такое и для чего это нужно, то советую начать с установки phpUnderControl по этой статье желательно не на Windows платформе и параллельного изучения соответствующей статьи. Надеюсь что в ближайшем будущем на PHP будут создаваться более качественные и технологичные разработки благодаря популяризации современных методов разработки ПО.

После довольно продолжительного времени автор phpUnderControl выпустил очередную версию 0.5.0. Кроме незначительных изменений, исправлений и улучшений в этой версии содержится одна новая важная особенность: PHP_CodeBrowser (обзор на англ.).

phpUnderControl 0.5.0

Читать дальше →
Total votes 48: ↑25 and ↓23 +2
Views 2.1K
Comments 35

JetBrains PhpStorm (AKA WebIDE) — публичная сборка 94.335

PHP *
В этой сборке вас ждут:

Новое имя. Два варианта Web IDE получили свои официальные названия: JetBrains WebStorm и JetBrains PhpStorm. Брендинг еще не закончен так что вы увидите знакомые белые сплэши и иконки WI в самых разных местах. Цель разработки остается прежней — идеальный инструмент для PHP/JS разработчиков и веб-дизайнеров.

Полностью настраиваемый PHP formatter – эта фича получила наибольшее количество голосов в трекере.
Читать дальше →
Total votes 41: ↑35 and ↓6 +29
Views 3.2K
Comments 108

Разработка через тестирование с Zend Framework и PHPUnit

Zend Framework *
Translation
Проведя последние несколько дней за изучением документации по Zend Framework, я был приятно удивлен новым функционалом, который был добавлен в последнюю версию этого каркаса Web-приложений.
Моей первой мыслью было осознание скорости, с которой взрослеет технология PHP.
Легкость совместного использования Zend Framework и PHPUnit — это, на мой взгляд, одно из наиболее значительных достижений.

Читать дальше →
Total votes 16: ↑10 and ↓6 +4
Views 4.3K
Comments 8

PHPUnit. Автоматические тесты

PHP *
Translation
Предисловие переводчика:
Недавно начал изучать PHPUnit (framework семейства xUnit) и с удивлением обнаружил, что на русском языке нет статей про автоматические тесты для самых-самых чайников.
В первой главе документации по PHPUnit на примерах очень доступно рассказывается, что такое автоматическое тестирование.


Даже хорошие программисты допускают ошибки. Разница между хорошим программистом и плохим заключается в том, что хороший программист как можно чаще использует тесты, чтобы найти свои ошибки.
Чем раньше Вы начнете тестировать, тем выше Ваши шансы найти ошибку, и тем ниже цена исправления.
Это объясняет, почему откладывание тестирования до момента передачи программы заказчику является очень плохой практикой. Большинство ошибок так и не будет найдено, а цена исправления станет такой высокой, что Вам придется составить большой график работы, т.к. сразу Вы не сможете их все исправить.
Читать дальше →
Total votes 41: ↑25 and ↓16 +9
Views 61K
Comments 31

PHPUnit. Часть 03 Написание тестов для PHPUnit

PHP *
Translation
Предисловие переводчика
Эта статья продолжает серию переводов официальной документации по PHPUnit на русский язык.
Часть 1, Часть 2

Пример 4.1 демонстрирует как с помощью PHPUnit можно выполнить тестирование операций с массивами PHP. В этом примере показаны базовые соглашения и шаги, свойственные тестам PHPUnit:
Читать дальше →
Total votes 31: ↑23 and ↓8 +15
Views 47K
Comments 12

Обеспечение качества программного продукта

PHP *
Дисциплина «Метрология программного обеспечения» входит в учебный план подготовки дипломированных специалистов по направлению 654600 — «Информатика и вычислительная техника» по специальности 220400 — «Программное обеспечение вычислительной техники и автоматизированных систем». Дисциплина изучает проблемы оценки метрических характеристик качества ПО на этапах от разработки спецификаций до завершения отладки и тестирования программного продукта. В курсе рассматриваются критерии, характеристики и метрики качества ПО; особый упор делается на характеристики корректности, надежности и сложности программ. Изучаются формальные модели и методы оценки как статических, так и динамических характеристик качества ПО, позволяющие на различных стадиях разработки выявлять просчеты и дефекты программного изделия. Рассматриваются инструментальные средства поддержки и автоматизации измерения характеристик ПО.
Далее по тексту будет находится краткий обзор инструментов с помощью которых можно анализировать различные характиристики в приложениях созданных на PHP. Данный материал появился на свет в результате некоторых экспериментов в области непрерывной интеграции, и должен был являться частью статьи про непрерывную интеграцию (спойлерить пока не буду, боюсь сглазить) все в том же РНР, но я решил все-таки выделить его в самостоятельный обзор, так как возможно, в последующих статьях я буду ссылаться на него, а так же надеюсь узнать об аналогичных инструментах еще не попавших мне на глаза. Некоторые инструменты уже были рассмотрены достаточно подробно, но тем не менее полного списка всех доступных еще не было.
Читать дальше →
Total votes 127: ↑115 and ↓12 +103
Views 11K
Comments 43

Непрерывная интеграция: Hudson + PHPUnit

PHP *
Существует цепочка в мозгу: мы напишем юнит тесты, затем эти тесты нам расскажут если мы что-то сломали, затем они нам почту будут отправлять о том, что проект поломался.
Это ничто иное, как иллюстрация непрерывной интеграции (Continious Integration) нычне крайне модного направления гибкой разработки. Единственный недостающий элемент цепочки — «КАК». Ниже коротенький рецепт, как бы отвечающий «очень просто».
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views 2.3K
Comments 19