Skip to content

Commit eaa7380

Browse files
committed
Simplify the logic and fix Windows build
1 parent 7cf0106 commit eaa7380

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

ext/opcache/ZendAccelerator.c

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,12 @@ typedef int gid_t;
7676
#endif
7777
#include <fcntl.h>
7878
#include <signal.h>
79+
80+
#ifndef PHP_WIN32
7981
#include <time.h>
82+
#else
83+
#include "win32/time.h"
84+
#endif
8085

8186
#ifndef ZEND_WIN32
8287
# include <sys/types.h>
@@ -1164,33 +1169,31 @@ zend_result validate_timestamp_and_record(zend_persistent_script *persistent_scr
11641169
return SUCCESS; /* Don't check timestamps of preloaded scripts */
11651170
}
11661171

1172+
double revalidate_reference_time = 0.0;
1173+
11671174
if (ZCG(cli_mode)) {
1175+
#if HAVE_GETTIMEOFDAY
11681176
struct timeval tp = {0};
11691177

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;
1178+
if (UNEXPECTED(gettimeofday(&tp, NULL) != 0)) {
1179+
revalidate_reference_time = (double)time(NULL);
11811180
} else {
1182-
persistent_script->dynamic_members.revalidate = now + ZCG(accel_directives).revalidate_freq;
1183-
return SUCCESS;
1181+
revalidate_reference_time = (double)(tp.tv_sec + tp.tv_usec / 1000000.00);
11841182
}
1183+
#else
1184+
revalidate_reference_time = (double)time(NULL);
1185+
#endif
11851186
} else {
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-
}
1187+
revalidate_reference_time = (double)ZCG(request_time);
1188+
}
1189+
1190+
if (ZCG(accel_directives).revalidate_freq && persistent_script->dynamic_members.revalidate >= revalidate_reference_time) {
1191+
return SUCCESS;
1192+
} else if (do_validate_timestamps(persistent_script, file_handle) == FAILURE) {
1193+
return FAILURE;
1194+
} else {
1195+
persistent_script->dynamic_members.revalidate = revalidate_reference_time + ZCG(accel_directives).revalidate_freq;
1196+
return SUCCESS;
11941197
}
11951198
}
11961199

0 commit comments

Comments
 (0)