summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2019-06-14 13:24:47 +0300
committerRemi Collet <remi@php.net>2019-06-18 07:48:49 +0200
commit6c225a63189bd1c0649c709d46112e0bf01f13b2 (patch)
tree3fc3aa8fec744cdc3afaffb8f14cf97ad22e1845
parent42c7d5106b03e0a07cfa6f40ed2d883575d6fcc3 (diff)
downloadphp-git-6c225a63189bd1c0649c709d46112e0bf01f13b2.tar.gz
Backport 91a6cdbff5ebd1ca4db1d6e8c42d3265ce80ace4
(cherry picked from commit 40f463b560f7d6cf4ae2c98752837b412a1c65f0)
-rw-r--r--ext/opcache/ZendAccelerator.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c
index 0d28e9d3a8..91436d537e 100644
--- a/ext/opcache/ZendAccelerator.c
+++ b/ext/opcache/ZendAccelerator.c
@@ -1761,11 +1761,15 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type)
int key_length;
int from_shared_memory; /* if the script we've got is stored in SHM */
- if (!file_handle->filename || !ZCG(enabled) || !accel_startup_ok) {
+ if (!file_handle->filename || !ZCG(accelerator_enabled)) {
/* The Accelerator is disabled, act as if without the Accelerator */
+ ZCG(cache_opline) = NULL;
+ ZCG(cache_persistent_script) = NULL;
return accelerator_orig_compile_file(file_handle, type);
#ifdef HAVE_OPCACHE_FILE_CACHE
} else if (file_cache_only) {
+ ZCG(cache_opline) = NULL;
+ ZCG(cache_persistent_script) = NULL;
return file_cache_compile_file(file_handle, type);
#endif
} else if (!ZCG(accelerator_enabled) ||
@@ -1775,6 +1779,8 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type)
return file_cache_compile_file(file_handle, type);
}
#endif
+ ZCG(cache_opline) = NULL;
+ ZCG(cache_persistent_script) = NULL;
return accelerator_orig_compile_file(file_handle, type);
}
@@ -1801,10 +1807,14 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type)
/* try to find cached script by key */
key = accel_make_persistent_key(file_handle->filename, strlen(file_handle->filename), &key_length);
if (!key) {
+ ZCG(cache_opline) = NULL;
+ ZCG(cache_persistent_script) = NULL;
return accelerator_orig_compile_file(file_handle, type);
}
persistent_script = zend_accel_hash_str_find(&ZCSG(hash), key, key_length);
} else if (UNEXPECTED(is_stream_path(file_handle->filename) && !is_cacheable_stream_path(file_handle->filename))) {
+ ZCG(cache_opline) = NULL;
+ ZCG(cache_persistent_script) = NULL;
return accelerator_orig_compile_file(file_handle, type);
}