← Назад к вопросам

Что последнее писал на чистом PHP?

1.0 Junior🔥 171 комментариев
#PHP Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Мой опыт с чистым PHP в современных проектах

Последний раз я писал на чистом PHP (без фреймворков) около 3 месяцев назад при решении специфической задачи — создании высокопроизводительного микросервиса для обработки очередей задач. Это был сознательный выбор в пользу чистого PHP по нескольким причинам:

Контекст проекта

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

  • Минимальное время запуска (low startup time)
  • Потребление памяти менее 50 МБ на процесс
  • Обработка 1000+ задач в секунду
  • Простая горизонтальная масштабируемость

Ключевые компоненты реализации

Архитектура сервиса:

<?php
// worker.php - основной рабочий процесс
declare(strict_types=1);

class TaskProcessor {
    private Redis $redis;
    private PDO $db;
    
    public function __construct() {
        // Минимальная инициализация зависимостей
        $this->redis = new Redis();
        $this->redis->connect('127.0.0.1', 6379);
        
        $this->db = new PDO(
            'mysql:host=localhost;dbname=tasks',
            'user',
            'password',
            [PDO::ATTR_PERSISTENT => true]
        );
    }
    
    public function run(): void {
        while (true) {
            $task = $this->fetchTask();
            if ($task) {
                $this->process($task);
            }
            usleep(1000); // Небольшая пауза для CPU
        }
    }
    
    private function fetchTask(): ?array {
        // Получение задачи из Redis очереди
        $data = $this->redis->lpop('task_queue');
        return $data ? json_decode($data, true) : null;
    }
}

Оптимизации производительности:

  • Использование OPcache с preloading
  • Выделенный пул соединений с БД
  • Сборка без лишних расширений PHP
  • Жёсткая типизация (strict_types=1)

Преимущества чистого PHP в этом сценарии

  1. Контроль над памятью — отсутствие накладных расходов фреймворка
  2. Быстрый запуск — скрипт начинал работу за 5-10 мс
  3. Простота развёртывания — единственный файл worker.php + конфиг
  4. Прозрачность — полная видимость всего кода без магии фреймворка

Пример обработчика задачи

<?php
// task_handlers.php
class DataTransformer {
    public static function processUserEvent(array $event): array {
        // Высокопроизводительная обработка данных
        $start = microtime(true);
        
        // Преобразование данных без лишних абстракций
        $result = [
            'user_id' => (int)$event['userId'],
            'processed_at' => time(),
            'data' => self::transformPayload($event['payload'])
        ];
        
        // Логирование метрик
        $duration = microtime(true) - $start;
        Metrics::record('task_processing_time', $duration);
        
        return $result;
    }
    
    private static function transformPayload(array $payload): string {
        // Специфичная бизнес-логика
        return hash('sha256', json_encode($payload));
    }
}

Почему не фреймворк?

Для данной задачи фреймворк (Laravel/Symfony) добавил бы:

  • Лишние 20-30 МБ памяти на процесс
  • Время инициализации 100-200 мс
  • Ненужные компоненты (роутинг, HTTP-ядро, шаблонизатор)

Современные возможности чистого PHP

В проекте активно использовались:

  • PHP 8.2+ фичи: readonly-классы, match-выражения, fibers для экспериментальной асинхронности
  • Современная обработка ошибок через ErrorException
  • Composer autoload без dev-зависимостей
  • Docker-образ на alpine размером 45 МБ

Выводы из этого опыта

  1. Чистый PHP жив и актуален для специфических задач
  2. Производительность может быть на порядок выше фреймворков
  3. Сложность поддержки возрастает при росте кодовой базы
  4. Идеальный баланс — использовать чистый PHP для узких мест, а фреймворк для основной бизнес-логики

Этот опыт подтвердил, что выбор инструмента должен определяться задачей: для высоконагруженных микросервисов чистый PHP часто оказывается оптимальным решением, в то время как для сложных веб-приложений фреймворки обеспечивают лучшую скорость разработки и поддерживаемость.