From 95248491afad70d86175b0a270ace90ab35ba48c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 20 May 2020 23:04:34 +0300 Subject: [PATCH] Prefer already cached version of the script --- ext/opcache/ZendAccelerator.c | 7 +++++++ ext/opcache/zend_accelerator_util_funcs.c | 2 ++ 2 files changed, 9 insertions(+) diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 79941a7d13d..25c76c4a5e4 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -1471,7 +1471,14 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr zend_accel_add_key(key, key_length, bucket); } zend_shared_alloc_unlock(); +#if 1 + /* prefer the script already stored in SHM */ + free_persistent_script(new_persistent_script, 1); + *from_shared_memory = 1; + return existing_persistent_script; +#else return new_persistent_script; +#endif } } diff --git a/ext/opcache/zend_accelerator_util_funcs.c b/ext/opcache/zend_accelerator_util_funcs.c index 131fc8495b9..db2ee8c4348 100644 --- a/ext/opcache/zend_accelerator_util_funcs.c +++ b/ext/opcache/zend_accelerator_util_funcs.c @@ -64,6 +64,8 @@ void free_persistent_script(zend_persistent_script *persistent_script, int destr if (!destroy_elements) { persistent_script->script.function_table.pDestructor = NULL; persistent_script->script.class_table.pDestructor = NULL; + } else { + destroy_op_array(&persistent_script->script.main_op_array); } zend_hash_destroy(&persistent_script->script.function_table);