Opened 18 years ago
Closed 18 years ago
#6966 closed defect (bug) (fixed)
cron: prevent duplicate events
| Reported by: | tellyworth | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 2.7 |
| Component: | General | Version: | |
| Severity: | normal | Keywords: | has-patch, has-test |
| Cc: | Focuses: |
Description
This is an unusual case but worth defending against:
If a user submits many posts in a short period of time (perhaps with XML-RPC), the cron array can fill up with a backlog of do_pings events. Since do_pings operates on all posts, there's no reason to have more than one of these events scheduled.
The enclosed patch changes wp_schedule_single_event() to ignore new events if there is already an identical event scheduled within 10 minutes of the new one. (It also handles the case where there's a backlog of events with timestamps in the past). The hook and args must be identical for it to be skipped. 10 minutes is arbitrary but seems reasonable; it could be an external define if there's a need to change it.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
Unit tests are in http://svn.automattic.com/wordpress-tests/wp-testcase/test_cron.php, test_duplicate_event() and test_not_duplicate_event(). All tests pass with the patch applied.