Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

opcache_invalidate is not safe under high concurrencies

Abierto
#134 1 comentario 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
laravel, php

Línea de trabajo

Inspecciona src/ComponentFactory.php en la línea 35 y revisa el issue y el reproducer vinculados de FrankenPHP para entender cómo se llama a opcache_invalidate durante las solicitudes. Somete el reproducer a pruebas de estrés, también con PostgreSQL o MySQL, y verifica que el comportamiento resultante ya no provoque restablecimientos inseguros de opcache ni corrupción de memoria con una alta concurrencia.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Volt Version

1.7.1

Laravel Version

12.10.2

PHP Version

8.4.7

Database Driver & Version

No response

Description

This issue is specifically about this line in Volt. It would be nice if it can be avoided in productive environments: https://github.com/livewire/volt/blob/0ab9d34c53f87444017270a2178250a19f3083ec/src/ComponentFactory.php#L35

This was first raised in the FrankenPHP Repo, where @robsontenorio noticed that when stress testing, the application would end up in a memory corruption after a while.

This happens due to opcache_invalidate() being called each request leading to a buildup in memory that eventually leads to an opcache_reset().

opcache_reset() is currently not really safe under concurrency (both in FPM and FrankenPHP, so I'd recommend avoiding an opcache_reset if possible in production environments.

Also when testing with the reproducer, I noticed that the path passed to opcache_invalidate was that of a Blade file (which makes it look unitended)

Steps To Reproduce

You can use the reproducer provided by @robsontenorio https://github.com/robsontenorio/paper.mary-ui.com/tree/franken-bug

It will take a while for the corruption to appear, using postgres/mysql instead of sqlite will make it happen faster.

Lenguaje dominante
PHP
Estrellas
423
Forks
36
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de livewire/volt

Todos los issues de livewire/volt

Issues similares

Más issues de PHP

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.