File tree Expand file tree Collapse file tree 3 files changed +62
-0
lines changed Expand file tree Collapse file tree 3 files changed +62
-0
lines changed Original file line number Diff line number Diff line change 1515use Laravel \Octane \Listeners \DisconnectFromDatabases ;
1616use Laravel \Octane \Listeners \EnsureUploadedFilesAreValid ;
1717use Laravel \Octane \Listeners \EnsureUploadedFilesCanBeMoved ;
18+ use Laravel \Octane \Listeners \FlushOnce ;
1819use Laravel \Octane \Listeners \FlushTemporaryContainerInstances ;
1920use Laravel \Octane \Listeners \FlushUploadedFiles ;
2021use Laravel \Octane \Listeners \ReportException ;
101102 ],
102103
103104 OperationTerminated::class => [
105+ FlushOnce::class,
104106 FlushTemporaryContainerInstances::class,
105107 // DisconnectFromDatabases::class,
106108 // CollectGarbage::class,
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Laravel \Octane \Listeners ;
4+
5+ use Illuminate \Support \Once ;
6+
7+ class FlushOnce
8+ {
9+ /**
10+ * Handle the event.
11+ *
12+ * @param mixed $event
13+ */
14+ public function handle ($ event ): void
15+ {
16+ if (class_exists (Once::class)) {
17+ Once::flush ();
18+ }
19+ }
20+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Laravel \Octane \Listeners ;
4+
5+ use Illuminate \Http \Request ;
6+ use Illuminate \Support \Once ;
7+ use Laravel \Octane \Tests \TestCase ;
8+
9+ class FlushOnceTest extends TestCase
10+ {
11+ public function test_once_is_flushed ()
12+ {
13+ if (! class_exists (Once::class)) {
14+ $ this ->markTestSkipped ('Once is only supported in Laravel 11+ ' );
15+ }
16+
17+ [$ app , $ worker ] = $ this ->createOctaneContext ([
18+ Request::create ('/ ' , 'GET ' ),
19+ Request::create ('/ ' , 'GET ' ),
20+ Request::create ('/ ' , 'GET ' ),
21+ ]);
22+
23+ $ results = [];
24+
25+ $ app ['router ' ]->middleware ('web ' )->get ('/ ' , function () use (&$ results ) {
26+ $ results [] = my_rand ();
27+ });
28+
29+ $ worker ->run ();
30+
31+ $ this ->assertTrue ($ results [0 ] !== $ results [1 ]);
32+ $ this ->assertTrue ($ results [0 ] !== $ results [2 ]);
33+ $ this ->assertTrue ($ results [1 ] !== $ results [2 ]);
34+ }
35+ }
36+
37+ function my_rand ()
38+ {
39+ return once (fn () => rand (1 , PHP_INT_MAX ));
40+ }
You can’t perform that action at this time.
0 commit comments