(走上讲台,清了清嗓子,把两瓶冒着冷气的可乐放在桌子上) 各位下午好! 我是今天的讲师。既然你们来听这个讲座,我就假设你们都经历过那种令人头皮发麻的时刻:深夜两点,服务器报警,监控大屏上一片红。你冲进机房(或者打开监控面板),发现你的 WordPress 网站挂了,报错是“502 Bad Gateway”。 而罪魁祸首,就是你上个月为了“提升内容丰富度”写的那段代码。 来,看这里。你的代码大概长这样: // 你写的那个“黑魔法”循环 $urls = get_all_collect_urls(); foreach ($urls as $url) { // 这一步要花 0.5 秒 $content = wp_remote_get($url); // 这一步要花 0.5 秒 save_to_db($content); // 睡一秒,做人留一线 sleep(1); } 你觉得这代码很完美对吧?每秒抓取一次,数据源源不断。但是,问题出在哪?问题出在PHP-FPM 上。 在 Web 环境下,PHP 是以进程池的方式运行的。当一个 PHP 进程在执行这段循环时,它就被“锁死”了。如果用户恰好在这个时 …
继续阅读“WordPress 内容采集系统(Collector)并发控制:实现高频率抓取时不影响 PHP-FPM 响应的负载均衡”