Skip to content

Commit 7cf0106

Browse files
tony2001Sannis
authored andcommitted
Force file revalidation in long running CLI scripts
1 parent b39e17b commit 7cf0106

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

ext/opcache/ZendAccelerator.c

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,14 +1162,35 @@ zend_result validate_timestamp_and_record(zend_persistent_script *persistent_scr
11621162
{
11631163
if (persistent_script->timestamp == 0) {
11641164
return SUCCESS; /* Don't check timestamps of preloaded scripts */
1165-
} else if (ZCG(accel_directives).revalidate_freq &&
1166-
persistent_script->dynamic_members.revalidate >= ZCG(request_time)) {
1167-
return SUCCESS;
1168-
} else if (do_validate_timestamps(persistent_script, file_handle) == FAILURE) {
1169-
return FAILURE;
1165+
}
1166+
1167+
if (ZCG(cli_mode)) {
1168+
struct timeval tp = {0};
1169+
1170+
//check current time as opposed to the "time of request"
1171+
if (gettimeofday(&tp, NULL) != 0) {
1172+
return SUCCESS;
1173+
}
1174+
1175+
double now = (double)(tp.tv_sec + tp.tv_usec / 1000000.00);
1176+
1177+
if (ZCG(accel_directives).revalidate_freq && persistent_script->dynamic_members.revalidate >= now) {
1178+
return SUCCESS;
1179+
} else if (do_validate_timestamps(persistent_script, file_handle) == FAILURE) {
1180+
return FAILURE;
1181+
} else {
1182+
persistent_script->dynamic_members.revalidate = now + ZCG(accel_directives).revalidate_freq;
1183+
return SUCCESS;
1184+
}
11701185
} else {
1171-
persistent_script->dynamic_members.revalidate = ZCG(request_time) + ZCG(accel_directives).revalidate_freq;
1172-
return SUCCESS;
1186+
if (ZCG(accel_directives).revalidate_freq && persistent_script->dynamic_members.revalidate >= ZCG(request_time)) {
1187+
return SUCCESS;
1188+
} else if (do_validate_timestamps(persistent_script, file_handle) == FAILURE) {
1189+
return FAILURE;
1190+
} else {
1191+
persistent_script->dynamic_members.revalidate = ZCG(request_time) + ZCG(accel_directives).revalidate_freq;
1192+
return SUCCESS;
1193+
}
11731194
}
11741195
}
11751196

@@ -2832,6 +2853,7 @@ static inline zend_result accel_find_sapi(void)
28322853
if (ZCG(accel_directives).enable_cli && (
28332854
strcmp(sapi_module.name, "cli") == 0
28342855
|| strcmp(sapi_module.name, "phpdbg") == 0)) {
2856+
ZCG(cli_mode) = true;
28352857
return SUCCESS;
28362858
}
28372859
}

ext/opcache/ZendAccelerator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ typedef struct _zend_accel_globals {
224224
zend_persistent_script *cache_persistent_script;
225225
/* preallocated buffer for keys */
226226
zend_string *key;
227+
bool cli_mode;
227228
} zend_accel_globals;
228229

229230
typedef struct _zend_string_table {

0 commit comments

Comments
 (0)