[wp-trac] [WordPress Trac] #49520: Feature request: Migrate cron from a single serialized wp_options entry to its own table
WordPress Trac
noreply at wordpress.org
Thu Feb 27 01:45:30 UTC 2020
#49520: Feature request: Migrate cron from a single serialized wp_options entry to
its own table
--------------------------+------------------------------
Reporter: archon810 | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Cron API | Version: 5.3.2
Severity: major | Resolution:
Keywords: | Focuses:
--------------------------+------------------------------
Description changed by SergeyBiryukov:
Old description:
> For as long as I can remember using WordPress, its Achilles heel has been
> cron.
>
> `cron` is a single serialized entry in `wp_options`, and on busy sites is
> subject to race conditions that oftentimes continuously overwrite the
> `cron` value with outdated data, resulting in:
>
> 1. completed events coming back (and thus running more than once)
> 2. arguably worse, `schedule_single_event()` losing events because
> they're overwritten
>
> The latter specifically has long been responsible for the infamous
> "missed schedule" issue in WordPress - a critical functionality of
> publishing posts at a certain time being completely unreliable.
>
> https://core.trac.wordpress.org/ticket/39924
> https://core.trac.wordpress.org/ticket/41965
> etc.
>
> https://github.com/humanmade/Cavalcade needed to be created to properly
> resolve this, but it's a 3rd party solution that isn't as trivial to set
> up as activating a plugin, and shouldn't be necessary in well-designed
> software. I see the cron problem as WordPress's biggest and most glaring
> flaw, and I'm sure many would agree.
>
> So, what's the solution? Can cron be migrated into its own wp_cron table
> and the related functions made to interact with the migrated data
> transparently to the user? I know it'd be a pretty big project, but it's
> one of those bandaids that just needs to be finally ripped off.
>
> https://core.trac.wordpress.org/ticket/15148 was closed as `wontfix`, but
> I hope the team can reconsider.
>
> Thank you.
New description:
For as long as I can remember using WordPress, its Achilles heel has been
cron.
`cron` is a single serialized entry in `wp_options`, and on busy sites is
subject to race conditions that oftentimes continuously overwrite the
`cron` value with outdated data, resulting in:
1. completed events coming back (and thus running more than once)
2. arguably worse, `schedule_single_event()` losing events because they're
overwritten
The latter specifically has long been responsible for the infamous "missed
schedule" issue in WordPress - a critical functionality of publishing
posts at a certain time being completely unreliable.
#39924, #41965, etc.
https://github.com/humanmade/Cavalcade needed to be created to properly
resolve this, but it's a 3rd party solution that isn't as trivial to set
up as activating a plugin, and shouldn't be necessary in well-designed
software. I see the cron problem as WordPress's biggest and most glaring
flaw, and I'm sure many would agree.
So, what's the solution? Can cron be migrated into its own wp_cron table
and the related functions made to interact with the migrated data
transparently to the user? I know it'd be a pretty big project, but it's
one of those bandaids that just needs to be finally ripped off.
#15148 was closed as `wontfix`, but I hope the team can reconsider.
Thank you.
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/49520#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list