Wordpress 定时任务 wp-cron 的性能优化 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
imdgr886
V2EX    WordPress

Wordpress 定时任务 wp-cron 的性能优化

  •  
  •   imdgr886 2022-04-23 15:15:44 +08:00 1866 次点击
    这是一个创建于 1316 天前的主题,其中的信息可能已经有所发展或是发生改变。

    wordpress 的定时任务,比如定时发布文章,依赖的是自带的 wp-cron 来实现,这个需要用户访问来触发

    由此引发了一个问题:

    • 如果网站用户访问不多,那么任务将不确定何时被触发
    • 如果网站访问量很大,那么会严重的损耗性能(当然访问量大的,应该有能力解决)

    那么最好是禁用自动触发的功能

    禁用 wp-cron

    wp-config.php 里加上:

    define('DISABLE_WP_CRON', true); 

    这样就不会每个用户访问都来检测定时任务了

    通过 crontab 触发 wp-cron

    如果是 linux 系统,并且可以登录服务器,那么用系统自带的 crontab 来触发任务是比较理想的选择

    crontab -e 

    然后添加

    * * * * * curl https://example.com/wp-cron.php>> /dev/null 2>&1 

    这样,每分钟系统都会访问 wp-corn.php 这个文件,然后 wp-cron 会判断何时执行任务

    通过外部第三方系统触发(可选)

    如果是 windows 系统,或者没有权限操作系统的 crontab ,那么还可以选择第三方的服务,这里我就要推一下我自己的服务了: URLCron

    URLCron 会根据设定的频率或者表达式,按时去访问,与 crontab 的行为一致。不过使用 URLCron 会更加的方便,因为配置更简单,不需要 Linux 服务器的知识,同时可以保存访问记录,所以不用担心有没有触发定时任务,都记着呢

    PC 和手机浏览器都有很好的体验,免费套餐也够 WordPress 用了

    4 条回复    2022-04-24 14:12:33 +08:00
    ZE3kr
        1
    ZE3kr  
       2022-04-23 21:34:50 +08:00
    你可以看下源代码

    https://github.com/WordPress/WordPress/blob/master/wp-includes/cron.php#L923

    cron 是通过发起 curl 异步执行的,所以并不会严重影响性能,而且最长只阻塞 0.01 秒。
    NewYear
        2
    NewYear  
       2022-04-24 10:43:07 +08:00
    @ZE3kr

    这个事情是一直以来存在的误会吗,还是说后面 WP 做了改善,又或者是 wp-cron.php 被执行多多少少影响性能,所以一规律的时间执行避免执行次数过多呢……疑惑中。
    ZE3kr
        3
    ZE3kr  
       2022-04-24 10:56:39 +08:00 via iPhone
    @NewYear 几年前从我刚接触 WP 开发,WP 就是这样实现的了。总之这样搞是 PHP 程序很常见的 workaround 。但换成 crontab 可以使用 PHP-CLI 无运行时间 /内存上限的执行确实是更优的。
    imdgr886
        4
    imdgr886  
    OP
       2022-04-24 14:12:33 +08:00
    @ZE3kr 因为是异步请求,0.01 秒其实不足以完成一个请求,只是客户端断开,服务器还会继续运行的。
    其实对小站性能影响不大,但是时间不可靠;对大站会有明显影响
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2168 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 00:20 PVG 08:20 LAX 16:20 JFK 19:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86