- improvement invalidate OPCACHE for cleared compiled and cached template files (forum topic 25557)

This commit is contained in:
uwetews
2015-09-15 00:15:12 +02:00
parent 6ff3505a37
commit 0eb7f4b8d1
5 changed files with 25 additions and 9 deletions

View File

@@ -4,6 +4,11 @@ This file contains a brief description of new features which have been added to
Smarty 3.1.28 Smarty 3.1.28
OPCACHE
=======
Smarty does now invalidate automatically updated and cleared compiled or cached template files in OPCACHE.
Correct operation is no longer dependent on OPCACHE configuration settings.
Template inheritance Template inheritance
==================== ====================
Template inheritance is now processed in run time. Template inheritance is now processed in run time.
@@ -117,7 +122,7 @@ Smarty 3.1.22
Smarty::DEBUG_INDIVIDUAL Smarty::DEBUG_INDIVIDUAL
have been introduced for setting the $debugging property. have been introduced for setting the $debugging property.
Smarty::DEBUG_INDIVIDUAL will create for each display() and fetch() call an individual gebug window. Smarty::DEBUG_INDIVIDUAL will create for each display() and fetch() call an individual debug window.
. .

View File

@@ -4,6 +4,7 @@
- optimize subtemplate handling - optimize subtemplate handling
- update template inheritance processing - update template inheritance processing
- move code of {call} processing back into Smarty_Internal_Template class - move code of {call} processing back into Smarty_Internal_Template class
- improvement invalidate OPCACHE for cleared compiled and cached template files (forum topic 25557)
30.08.2015 30.08.2015
- size optimization move some runtime functions into extension - size optimization move some runtime functions into extension

View File

@@ -119,7 +119,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* smarty version * smarty version
*/ */
const SMARTY_VERSION = '3.1.28-dev/58'; const SMARTY_VERSION = '3.1.28-dev/59';
/** /**
* define variable scopes * define variable scopes

View File

@@ -82,13 +82,16 @@ class Smarty_Internal_Extension_Clear
} }
} }
// check compile id // check compile id
if (isset($_compile_id) && (!isset($_parts[$_parts_count - 2 - $_compile_id_offset]) || $_parts[$_parts_count - 2 - $_compile_id_offset] != $_compile_id)) { if (isset($_compile_id) && (!isset($_parts[$_parts_count - 2 - $_compile_id_offset]) ||
$_parts[$_parts_count - 2 - $_compile_id_offset] != $_compile_id)
) {
continue; continue;
} }
// check cache id // check cache id
if (isset($_cache_id)) { if (isset($_cache_id)) {
// count of cache id parts // count of cache id parts
$_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset : $_parts_count - 1 - $_compile_id_offset; $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset :
$_parts_count - 1 - $_compile_id_offset;
if ($_parts_count < $_cache_id_parts_count) { if ($_parts_count < $_cache_id_parts_count) {
continue; continue;
} }
@@ -120,6 +123,9 @@ class Smarty_Internal_Extension_Clear
} }
} }
$_count += @unlink((string) $_file) ? 1 : 0; $_count += @unlink((string) $_file) ? 1 : 0;
if (function_exists('opcache_invalidate')) {
opcache_invalidate((string) $_file);
}
} }
} }
} }

View File

@@ -91,10 +91,11 @@ class Smarty_Internal_Method_ClearCompiledTemplate
if ((!isset($_compile_id) || (isset($_filepath[$_compile_id_part_length]) && if ((!isset($_compile_id) || (isset($_filepath[$_compile_id_part_length]) &&
$a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length))) && $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length))) &&
(!isset($resource_name) || (isset($_filepath[$_resource_part_1_length]) && (!isset($resource_name) || (isset($_filepath[$_resource_part_1_length]) &&
substr_compare($_filepath, $_resource_part_1, - $_resource_part_1_length, $_resource_part_1_length) == substr_compare($_filepath, $_resource_part_1, - $_resource_part_1_length,
0) || (isset($_filepath[$_resource_part_2_length]) && $_resource_part_1_length) == 0) ||
substr_compare($_filepath, $_resource_part_2, - $_resource_part_2_length, $_resource_part_2_length) == (isset($_filepath[$_resource_part_2_length]) &&
0)) substr_compare($_filepath, $_resource_part_2, - $_resource_part_2_length,
$_resource_part_2_length) == 0))
) { ) {
if (isset($exp_time)) { if (isset($exp_time)) {
if (time() - @filemtime($_filepath) >= $exp_time) { if (time() - @filemtime($_filepath) >= $exp_time) {
@@ -114,6 +115,9 @@ class Smarty_Internal_Method_ClearCompiledTemplate
} }
} }
$_count ++; $_count ++;
if (function_exists('opcache_invalidate')) {
opcache_invalidate($_filepath);
}
} }
} }
} }