FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
wordpress-azure/wp-cron.php at master · qubitsolutions/wordpress-azure · GitHub
qubitsolutions
wordpress-azure
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
wordpress-azure
/
wp-cron.php
Copy path
More file actions
More file actions
Latest commit
History
History
History
147 lines (124 loc) · 3.76 KB
Breadcrumbs
wordpress-azure
/
wp-cron.php
Copy path
File metadata and controls
147 lines (124 loc) · 3.76 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
/**
* A pseudo-CRON daemon for scheduling WordPress tasks
*
* WP Cron is triggered when the site receives a visit. In the scenario
* where a site may not receive enough visits to execute scheduled tasks
* in a timely manner, this file can be called directly or via a server
* CRON daemon for X number of times.
*
* Defining DISABLE_WP_CRON as true and calling this file directly are
* mutually exclusive and the latter does not rely on the former to work.
*
* The HTTP request to this file will not slow down the visitor who happens to
* visit when the cron job is needed to run.
*
* @package WordPress
*/
ignore_user_abort
(
true
);
/* Don't make the request block till we finish, if possible. */
if
(
function_exists
(
'
fastcgi_finish_request
'
) &&
version_compare
(
phpversion
(),
'
7.0.16
'
,
'
>=
'
) ) {
fastcgi_finish_request
();
}
if
( !
empty
(
$
_POST
) ||
defined
(
'
DOING_AJAX
'
) ||
defined
(
'
DOING_CRON
'
) ) {
die
();
}
/**
* Tell WordPress we are doing the CRON task.
*
* @var bool
*/
define
(
'
DOING_CRON
'
,
true
);
if
( !
defined
(
'
ABSPATH
'
) ) {
/** Set up WordPress environment */
require_once
(
dirname
(
__FILE__
) .
'
/wp-load.php
'
);
}
/**
* Retrieves the cron lock.
*
* Returns the uncached `doing_cron` transient.
*
* @ignore
* @since 3.3.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @return string|false Value of the `doing_cron` transient, 0|false otherwise.
*/
function
_get_cron_lock
() {
global
$
wpdb
;
$
value
=
0
;
if
(
wp_using_ext_object_cache
() ) {
/*
* Skip local cache and force re-fetch of doing_cron transient
* in case another process updated the cache.
*/
$
value
=
wp_cache_get
(
'
doing_cron
'
,
'
transient
'
,
true
);
}
else
{
$
row
=
$
wpdb
->
get_row
(
$
wpdb
->
prepare
(
"
SELECT option_value FROM
$
wpdb
->
options
WHERE option_name = %s LIMIT 1
"
,
'
_transient_doing_cron
'
) );
if
(
is_object
(
$
row
) ) {
$
value
=
$
row
->
option_value
;
}
}
return
$
value
;
}
$
crons
=
wp_get_ready_cron_jobs
();
if
(
empty
(
$
crons
) ) {
die
();
}
$
gmt_time
=
microtime
(
true
);
// The cron lock: a unix timestamp from when the cron was spawned.
$
doing_cron_transient
=
get_transient
(
'
doing_cron
'
);
// Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
if
(
empty
(
$
doing_wp_cron
) ) {
if
(
empty
(
$
_GET
[
'
doing_wp_cron
'
] ) ) {
// Called from external script/job. Try setting a lock.
if
(
$
doing_cron_transient
&& (
$
doing_cron_transient
+
WP_CRON_LOCK_TIMEOUT
>
$
gmt_time
) ) {
return
;
}
$
doing_cron_transient
=
$
doing_wp_cron
=
sprintf
(
'
%.22F
'
,
microtime
(
true
) );
set_transient
(
'
doing_cron
'
,
$
doing_wp_cron
);
}
else
{
$
doing_wp_cron
=
$
_GET
[
'
doing_wp_cron
'
];
}
}
/*
* The cron lock (a unix timestamp set when the cron was spawned),
* must match $doing_wp_cron (the "key").
*/
if
(
$
doing_cron_transient
!=
$
doing_wp_cron
) {
return
;
}
foreach
(
$
crons
as
$
timestamp
=>
$
cronhooks
) {
if
(
$
timestamp
>
$
gmt_time
) {
break
;
}
foreach
(
$
cronhooks
as
$
hook
=>
$
keys
) {
foreach
(
$
keys
as
$
k
=>
$
v
) {
$
schedule
=
$
v
[
'
schedule
'
];
if
(
$
schedule
!=
false
) {
$
new_args
=
array
(
$
timestamp
,
$
schedule
,
$
hook
,
$
v
[
'
args
'
] );
call_user_func_array
(
'
wp_reschedule_event
'
,
$
new_args
);
}
wp_unschedule_event
(
$
timestamp
,
$
hook
,
$
v
[
'
args
'
] );
/**
* Fires scheduled events.
*
* @ignore
* @since 2.1.0
*
* @param string $hook Name of the hook that was scheduled to be fired.
* @param array $args The arguments to be passed to the hook.
*/
do_action_ref_array
(
$
hook
,
$
v
[
'
args
'
] );
// If the hook ran too long and another cron process stole the lock, quit.
if
(
_get_cron_lock
() !=
$
doing_wp_cron
) {
return
;
}
}
}
}
if
(
_get_cron_lock
() ==
$
doing_wp_cron
) {
delete_transient
(
'
doing_cron
'
);
}
die
();
Back
|
FazBrowse Home
|
New Git URL