TGViewer
dev notes dev notes @junsenior · 1.39K subscribers
Post #133 1.83K
Только сейчас узнал что в Symfony есть крутой компонент, позволяющий управлять доступом к общим ресурсам - Lock Component.
Часто бывает, что команда не успевает закончить работу, а менеджер (будь то cron или обёртка в виде supervisor) запускает ещё один экземпляр. Со временем пулл процессов накапливается, и возникает неприятная вещи - взаимные блокировки, утечки памяти и на выходе если и не фаталы, то дубли в базе обеспечены.
Решение - подключаем трейт LockableTrait, и ставим проверку в начале команды:

if (!$this->lock()) {
$output->writeln('The command is already running in another process.');
return Command::SUCCESS;
}

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

В целом Lock Component позволяет использовать различные адаптеры, от Redis'а до семафоров, реализованных в PHP (https://www.php.net/manual/en/book.sem.php). Беру на вооружение :)
More from @junsenior
  1. Sep 28, 2026Сошлись две вещи. Первая - мой проект safemap.ai, про который я уже писал выше - интеракти…
  2. Sep 17, 2026Post #356
  3. Sep 15, 2026Увидел тут в x.com статистику вакансий по PHP и статистику вакансий по hh.ru в целом. Я на…
  4. Sep 12, 2026Вдохновившись проектом, где делали интерактивную карту с тем, как работает Postgres (писал…
  5. Sep 8, 2026OpenAI выложили блогпост https://openai.com/index/navier-stokes-solution/ Мы публикуем реш…
  6. Sep 8, 2026Если кто не знал, вокруг этого сейчас разгорается очень большой скандал с OpenAI. Кратко,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →