Remove unused $user variables, add cron container for dev

- Remove 11 unused $user assignments from requireEventOwnership calls
- Add cron container to docker-compose-dev.yml with scheduled tasks:
  expire-pending orders (5min), messenger monitor (hourly),
  meilisearch consistency (daily 3am)
- Cron logs show registered tasks at startup and timestamps per execution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-24 11:52:31 +01:00
parent 876cf60db6
commit ca13660aea
5 changed files with 58 additions and 11 deletions

View File

@@ -151,6 +151,20 @@ services:
retries: 10 retries: 10
start_period: 120s start_period: 120s
cron:
build:
context: ./docker/cron
dockerfile: Dockerfile
container_name: e_ticket_cron
restart: unless-stopped
volumes:
- .:/app
depends_on:
database:
condition: service_healthy
redis:
condition: service_healthy
redisinsight: redisinsight:
image: redis/redisinsight:latest image: redis/redisinsight:latest
container_name: e_ticket_redisinsight container_name: e_ticket_redisinsight

22
docker/cron/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
FROM php:8.4-fpm
RUN apt-get update && apt-get install -y --no-install-recommends \
libpq-dev \
libzip-dev \
libicu-dev \
cron \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-install pdo_pgsql intl \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& groupadd -g 1000 appuser && useradd -u 1000 -g appuser -m appuser
COPY crontab /etc/cron.d/app-crontab
RUN chmod 0644 /etc/cron.d/app-crontab && crontab -u appuser /etc/cron.d/app-crontab
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
WORKDIR /app
CMD ["/entrypoint.sh"]

3
docker/cron/crontab Normal file
View File

@@ -0,0 +1,3 @@
*/5 * * * * echo "[$(date '+\%Y-\%m-\%d \%H:\%M:\%S')] START app:orders:expire-pending" >> /proc/1/fd/1 && php /app/bin/console app:orders:expire-pending --env=dev >> /proc/1/fd/1 2>&1 && echo "[$(date '+\%Y-\%m-\%d \%H:\%M:\%S')] END app:orders:expire-pending" >> /proc/1/fd/1
0 * * * * echo "[$(date '+\%Y-\%m-\%d \%H:\%M:\%S')] START app:monitor:messenger" >> /proc/1/fd/1 && php /app/bin/console app:monitor:messenger --env=dev >> /proc/1/fd/1 2>&1 && echo "[$(date '+\%Y-\%m-\%d \%H:\%M:\%S')] END app:monitor:messenger" >> /proc/1/fd/1
0 3 * * * echo "[$(date '+\%Y-\%m-\%d \%H:\%M:\%S')] START app:meilisearch:check-consistency" >> /proc/1/fd/1 && php /app/bin/console app:meilisearch:check-consistency --fix --env=dev >> /proc/1/fd/1 2>&1 && echo "[$(date '+\%Y-\%m-\%d \%H:\%M:\%S')] END app:meilisearch:check-consistency" >> /proc/1/fd/1

View File

@@ -0,0 +1,8 @@
#!/bin/sh
echo "=== E-Ticket Cron ==="
echo "Registered tasks:"
echo " - */5 * * * * app:orders:expire-pending"
echo " - 0 * * * * app:monitor:messenger"
echo " - 0 3 * * * app:meilisearch:check-consistency --fix"
echo "===================="
exec cron -f

View File

@@ -470,7 +470,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$name = trim($request->request->getString('name')); $name = trim($request->request->getString('name'));
if ('' === $name) { if ('' === $name) {
@@ -518,7 +518,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$category = $this->requireCategory($categoryId, $event, $em); $category = $this->requireCategory($categoryId, $event, $em);
if ($request->isMethod('POST')) { if ($request->isMethod('POST')) {
@@ -569,7 +569,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$category = $em->getRepository(Category::class)->find($categoryId); $category = $em->getRepository(Category::class)->find($categoryId);
if ($category && $category->getEvent()->getId() === $event->getId()) { if ($category && $category->getEvent()->getId() === $event->getId()) {
@@ -592,7 +592,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$order = json_decode($request->getContent(), true); $order = json_decode($request->getContent(), true);
if (\is_array($order)) { if (\is_array($order)) {
@@ -726,7 +726,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$order = json_decode($request->getContent(), true); $order = json_decode($request->getContent(), true);
if (\is_array($order)) { if (\is_array($order)) {
@@ -750,7 +750,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$firstName = trim($request->request->getString('first_name')); $firstName = trim($request->request->getString('first_name'));
$lastName = trim($request->request->getString('last_name')); $lastName = trim($request->request->getString('last_name'));
@@ -828,7 +828,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$order = $em->getRepository(BilletBuyer::class)->find($orderId); $order = $em->getRepository(BilletBuyer::class)->find($orderId);
if (!$order || $order->getEvent()->getId() !== $event->getId()) { if (!$order || $order->getEvent()->getId() !== $event->getId()) {
@@ -850,7 +850,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$order = $em->getRepository(BilletBuyer::class)->find($orderId); $order = $em->getRepository(BilletBuyer::class)->find($orderId);
if (!$order || $order->getEvent()->getId() !== $event->getId()) { if (!$order || $order->getEvent()->getId() !== $event->getId()) {
@@ -959,7 +959,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$design = $em->getRepository(BilletDesign::class)->findOneBy(['event' => $event]); $design = $em->getRepository(BilletDesign::class)->findOneBy(['event' => $event]);
if (!$design) { if (!$design) {
@@ -1012,7 +1012,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$event->setIsSecret(!$event->isSecret()); $event->setIsSecret(!$event->isSecret());
$em->flush(); $em->flush();
@@ -1032,7 +1032,7 @@ class AccountController extends AbstractController
return $redirect; return $redirect;
} }
$user = $this->requireEventOwnership($event); $this->requireEventOwnership($event);
$eventTitle = $event->getTitle(); $eventTitle = $event->getTitle();
$eventDbId = $event->getId(); $eventDbId = $event->getId();