@@ -135,6 +135,23 @@ static void frankenphp_worker_request_shutdown() {
135135 zend_end_try ();
136136
137137 zend_set_memory_limit (PG (memory_limit ));
138+
139+ /*
140+ * free any php_stream resources that are not php source files
141+ * all resources are stored in EG(regular_list), see zend_list.c
142+ */
143+ zend_resource * val ;
144+ ZEND_HASH_FOREACH_PTR (& EG (regular_list ), val ) {
145+ /* verify the resource is a stream */
146+ if (val -> type == php_file_le_stream ()) {
147+ php_stream * stream = (php_stream * )val -> ptr ;
148+ if (stream != NULL && stream -> ops != & php_stream_stdio_ops &&
149+ !stream -> is_persistent && GC_REFCOUNT (val ) == 1 ) {
150+ zend_list_delete (val );
151+ }
152+ }
153+ }
154+ ZEND_HASH_FOREACH_END ();
138155}
139156
140157PHPAPI void get_full_env (zval * track_vars_array ) {
@@ -442,23 +459,6 @@ PHP_FUNCTION(frankenphp_handle_request) {
442459 ctx -> has_active_request = false;
443460 go_frankenphp_finish_worker_request (thread_index );
444461
445- /*
446- * free any php_stream resources that are not php source files
447- * resources are stored EG(regular_list), see zend_list.c
448- */
449- zend_resource * val ;
450- ZEND_HASH_FOREACH_PTR (& EG (regular_list ), val ) {
451- /* verify the resource is a stream */
452- if (val -> type == php_file_le_stream ()) {
453- php_stream * stream = (php_stream * )val -> ptr ;
454- if (stream != NULL && stream -> ops != & php_stream_stdio_ops &&
455- !stream -> is_persistent && GC_REFCOUNT (val ) == 1 ) {
456- zend_list_delete (val );
457- }
458- }
459- }
460- ZEND_HASH_FOREACH_END ();
461-
462462 RETURN_TRUE ;
463463}
464464
0 commit comments