FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
wordpress-azure/wp-cron.php at master · JoeHanip/wordpress-azure · GitHub
JoeHanip
/
wordpress-azure
Public
forked from
azureappserviceoss/wordpress-azure
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
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
152 lines (128 loc) · 3.85 KB
Breadcrumbs
wordpress-azure
/
wp-cron.php
Copy path
File metadata and controls
152 lines (128 loc) · 3.85 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
148
149
150
151
152
<?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 a scheduled cron event runs.
*
* @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
'
,
'
>=
'
) ) {
if
( !
headers_sent
() ) {
header
(
'
Expires: Wed, 11 Jan 1984 05:00:00 GMT
'
);
header
(
'
Cache-Control: no-cache, must-revalidate, max-age=0
'
);
}
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
__DIR__
.
'
/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, try to grab 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_wp_cron
=
sprintf
(
'
%.22F
'
,
microtime
(
true
) );
$
doing_cron_transient
=
$
doing_wp_cron
;
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
) {
wp_reschedule_event
(
$
timestamp
,
$
schedule
,
$
hook
,
$
v
[
'
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