Как стать автором
Обновить
49.52

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга
Уровень сложности

PHP. Как увеличить потребление памяти в 3 и более раз при работе с массивами

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 4.7K
PHP *Серверная оптимизация *

1. Общие сведения
2. Увеличиваем потребление памяти вдвое
3. Увеличиваем потребление памяти втрое
4. Ещё раз увеличиваем потребление памяти на ровном месте.
5. Заключение

Читать далее
Всего голосов 28: ↑28 и ↓0 +28
Комментарии 31

Новости

Поиск минимальной стоимости корректировки массива

Время на прочтение 5 мин
Количество просмотров 1K
Блог компании OTUS PHP *Алгоритмы *
Перевод

Имея массив целых положительных чисел, нужно заменить каждый элемент так, чтобы разница между соседними элементами массива была меньше или равна заданному целевому значению (target). Нам необходимо минимизировать стоимость корректировки, то есть суммарную разницу между новыми и старыми значениями. По сути, нам нужно минимизировать ∑|A[i] — Anew[i]|, где 0 ≤ i ≤ n-1, n — размер A[], а Anew[] — массив с разницей между соседними элементами меньше или равной заданной. Предположим, что все элементы массива меньше константы M = 100.

Читать далее
Всего голосов 14: ↑10 и ↓4 +6
Комментарии 0

Разбираемся с асинхронным PHP

Время на прочтение 10 мин
Количество просмотров 4.4K
Блог компании OTUS PHP *
Перевод

Как перенести обработку электронных писем в отдельный процесс, чтобы он не блокировал исходный веб-запрос? Именно это мы и рассмотрим в данной статье, в частности, всевозможные способы решения данной проблемы на PHP, используя новую инфраструктуру (или без нее).

Читать далее
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 27

Генерация и валидация чисел по алгоритму Луна

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 4.7K
PHP *Алгоритмы *Laravel *
Обзор

Алгоритм Луна (Luhn algorithm) - это процесс вычисления контрольной цифры для числа в соответствии со стандартом ISO/IEC 7812. Процесс предназначен, в первую очередь, для выявления ошибок, вызванных с непреднамеренным искажением данных. Например, при ручном вводе номера карты или любого другого числа.

Разберём как он работает и рассмотрим инструмент для формирования номеров по алгоритму.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 31

Истории

Неудачное внедрение Redis Cluster в монолит на PHP 7.2.X

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 5.2K
Высокая производительность *Разработка веб-сайтов *PHP *Серверная оптимизация *NoSQL *
Кейс

Исповедь о том как принес в проект проблему, которую так и не устранил в течение долгого времени.

Осторожно! Статья может вызвать обострение профессиональных заболеваний вплоть до боли ниже поясницы.

Читать далее
Всего голосов 28: ↑28 и ↓0 +28
Комментарии 12

Несколько очевидных и не очень способов оптимизации производительности средних serverside-приложений

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 3.6K
Высокая производительность *Разработка веб-сайтов *PHP *Серверная оптимизация *
Туториал

В качестве подопытного для оптимизации был взят PHP API, размещённый на ~10 серверах. Все нижеперечисленные приёмы были опробованы и применены. Поэтому рекомендую присмотреться к списку, если у вас PHP API на нескольких (от 1 до ~10) серверах с обычным стеком (nginx, fpm, mysql/postgres, redis/memcahed, rabbitmq, ...), который почему-то задыхается на казалось бы неплохом железе и к тому же не утилизирует весь выделенный CPU.

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 5

Создание сервера для онлайн ММО игр на PHP ч.14 — Сетевая карта и задержка кадра (Latency frame) по RFC 2544 (1242)

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3.2K
PHP *Проектирование и рефакторинг *Разработка игр *Сетевые технологии *Параллельное программирование *
Роадмэп

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

В статье я расскажу как разработчиков вводят в заблуждение рассказывая что необходимо учесть в первую очередь при разработке серверов (и не только для игр), но умалчивая о реальных "узких местах" (проблемах).

В конце статьи будет приложена видео версия.

Читать далее
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 33

Создание плагина кнопки редактора в Joomla 4

Уровень сложности Сложный
Время на прочтение 23 мин
Количество просмотров 718
Разработка веб-сайтов *Open source *PHP *JavaScript *Joomla *
Туториал

Статья о том, как удобно расширить пользовательские возможности при редактировании или создании контента в Joomla. Если Вы, например, захотите сделать подсчет СЕО-характеристик текста или внедрить ИИ помощник прямо в интерфейс Joomla, то эта статья расскажет как Вашему разработчику это сделать.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 5

PHP. Рецепты программирования (2023) — обзор книги и рекомендации

Время на прочтение 3 мин
Количество просмотров 3.6K
PHP *Читальный зал
Обзор

В настоящий момент выходит не так много книг по PHP, поэтому я решил прочитать свежее переиздание книги PHP Cookbook от 2023 года, которую в России переводят, как "PHP. Рецепты программирования". Хотелось бы «УЗНАТЬ», что можно написать не про какую-то сферу, где применяется PHP, а именно про сам язык.

Об авторе

Эрик Манн - инженер-программист с опытом почти в два десятилетия. Он создавал масштабируемые проекты для стартапов на ранней стадии и для компаний из списка Fortune 500. Эрик часто рассказывает о архитектуре программного обеспечения, технике безопасности и передовом опыте разработки. Он регулярно уже более пяти лет пишет статьи в журнале php[architect], и больше всего ему нравится помогать новым разработчикам избегать многих ошибок, которые он совершил в своей карьере программиста.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 16

Создание сервера для онлайн ММО игр на PHP ч.13 — Event-driven паттерн, JSON-RPC и почему не сервисная (SOA) архитектура

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 3.5K
PHP *Программирование *Проектирование и рефакторинг *Разработка игр *Алгоритмы *
Роадмэп

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

В этой статье я без привязки к коду объясню простым языком и в картинках как можно применять в разработке архитектуры авторитарного сервера для онлайн игр шаблон проектирования Event-driven.

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 6

Наследование Entity в Doctrine

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 1.8K
PHP *Совершенный код *Проектирование и рефакторинг *
Из песочницы

В практике разработки веб-приложений иногда возникает необходимость расширения сущностей, которые представляют таблицы базы данных в коде. Для примера рассмотрим следующую ситуацию: в нашем проекте была реализация класса автотранспортного средства Car, но спустя некоторое время появилась возможность ввести еще один класс автотранспортного средства под названием Buggy. Новый класс, имел одинаковые поля и представлял схожую концепцию. Нам важно было иметь возможность работать с ним как с объединенным типом Auto, а также как с отдельным типом.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 10

Создание сервера для онлайн ММО игр на PHP ч. 12 — Очереди и параллельное программирование на CPU

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 2.3K
PHP *Анализ и проектирование систем *Разработка игр *Сетевые технологии *Параллельное программирование *
Роадмэп

В данной статье речь пойдет о взаимодействии WebSocket сервера и сервера рассчитывающего события в мультиплеерных играх (команды пользователей, игровую физику, алгоритмический искусственный интеллект и т.п.).

Будет затронута тема очередей, асинхронного логирования, параллельного программирования на CPU и использования каналов (сhannel) для взаимодействия между процессами (thread - ветками) на языке программирования PHP (аналогичный функционал есть в языке GO).

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 8

Дизассемблер 6502 (nes/famicom/dendy) на php

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2.7K
PHP *Assembler *

Я продолжаю изучать ассемблер 6502, но для экспериментов мне понадобился дизассемблер, Я пробовал использовать da65 собственно тот что идет вместе с ассемблером и линкером ca65 и ld65 соответственно. Но заметив в документации коды команд в hex представление. И вдруг понял что если прочитать файл nes то можно просто взять код инструкции, взять ее длину и спарсить аргумент. И мы получим дизассемблированный код в его простом представление.

Под катом небольшой рассказ о том как я написал скрипт дизассемблера на PHP.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 9

Использование ICU Message Format в PHP

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2.2K
PHP *Symfony *Yii *
Туториал
Из песочницы

Недавно я узнал про довольно интересный инструмент, встроенный в РНР. Оказывается, в языке нативно поддерживается универсальный формат шаблонов для сообщений, ICU Message Format. В частности, он используется в Symfony Translation Component и в системе интернационализации фреймворка Yii 2. Однако этот функционал доступен и сам по себе, в чистом РНР. И может использоваться не только для создания многоязычных сайтов, но и в качестве простенького шаблонизатора, например для email-рассылок.

Я решил разобраться с ним поподробнее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 2

Пишем Telegram бота для распознавания голосовых сообщений и их обработки с помощью AI

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 4.2K
PHP *
Из песочницы

Всем привет. Меня зовут Игорь Филиппов и я веб-разработчик. Вы, вероятнее всего, знаете, как прочно ChatGPT закрепился в медийном пространстве. Ежедневно выходит сотни статей и видео на эту тему, предлагая разнообразные варианты применения.

Мне в голову пришла идея создать бота, который автоматически под каждым голосовым сообщением оставляет свой реплай с полной расшифровкой аудио. Но в процессе разработки я подумал, что можно дополнительно проинтегрировать бота с ChatGPT - для получения краткого пересказа самого сообщения. Тем более, к тому моменту, когда я делал бота, Open AI только выпустила доступ к API.

С какими сложностями столкнулся, как решил и что получилось в итоге описал в этой статье.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 12

Создание сервера для онлайн ММО игр на PHP ч. 10 — Открытый бесшовный мир в 2D игре и причем тут беспилотники

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3.6K
PHP *Разработка игр *Алгоритмы *Unity *
Роадмэп

В этот раз я расскажу как удалось реализовать открытый бесшовный мир в горизонтально масштабируемой 2D онлайн игре, а так же поделюсь идеей управления разведывательными беспилотными летательными аппаратами на огромных территориях.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 13

Делюсь опытом участия в хакатоне от Совкомбанка

Время на прочтение 12 мин
Количество просмотров 3K
Разработка веб-сайтов *PHP *Программирование *Symfony *VueJS *
Обзор

Сегодня, я хочу поделиться опытом и рассказать про участие в хакатоне от совкомбанка. Подробнее про хакатон можно почитать тут. Для лл я вкратце опишу задачу — командой до 5 человек сделать внутренний сервис для подбора персонала и ведения HR деятельности.

Читать далее
Всего голосов 20: ↑15 и ↓5 +10
Комментарии 9

Создание сервера для онлайн ММО игр на PHP ч. 9 — Игровые серверные механики

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 4.3K
PHP *.NET *Разработка игр *Lua *Unity *
Роадмэп

После успешной оптимизации клиентской части и серверной архитектуры пришла пора писать механики самой игры для взаимодействия по API — я называю их событиями (они вешаются на какой либо игровой объект на сервере, помещаются в очередь и срабатывают когда придет их время).

Суть работы взаимодействия сервера и клиентской части следующая:

Читать далее
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 31

Кто до сих пор использует PHP?

Уровень сложности Простой
Время на прочтение 11 мин
Количество просмотров 14K
Блог компании RUVDS.com Разработка веб-сайтов *PHP *JavaScript *Программирование *
Мнение
Перевод

Свой путь в сфере разработки я начала с языка PHP, но позднее в индустрии программирования акцент сместился в сторону JavaScript. Отчасти причина в том, что фронтенд-составляющая веб-среды так или иначе работает именно на JS. В этой сфере я провела последние десять лет.

Недавно мне подвернулась кое-какая работа, связанная с PHP. Поначалу я была удивлена, ведь за этим языком закрепилась дурная слава – преимущественно из-за его ассоциирования с устаревшими проектами WordPress (и всеми вытекающими из этого уязвимостями). Но WordPress – это всё же не PHP.

В общем мне стало любопытно. Кто они – те люди, которые до сих пор используют PHP? Почему они это делают? И как этот опыт можно сравнить с моим скромным миром серверных проектов на JS?
Читать дальше →
Всего голосов 113: ↑63 и ↓50 +13
Комментарии 77

Создание сервера для онлайн ММО игр на PHP ч. 8 — Клиентская часть на Unity

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 1.8K
PHP *JavaScript *Lua *Unity *Игры и игровые консоли
Роадмэп

Разобравшись в архитектуре сервера, реализовав механизм простого расширения его функционала путем добавления пользовательского кода через WEB админ панель и игровых локаций захотелось наконец посмотреть как бы это все работало и выглядело в игре.

Т. к. сервер для игры является авторитарным, то клиентская часть должна была содержать.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Вклад авторов

Работа

PHP программист
158 вакансий