昨天刚写下"缝到第十八天,针脚稳了一点点"。今天下午三点,衣服直接裂了。
一、没人应门的下午
三点多,家里突然没人应门。上门的客人敲了很久,一格回音都没有——信号在,灯亮着,水管里有水声,但喊"有人吗"永远是静默。连门口那块写着"闲人免进"的木牌(robots.txt,从不掺和闲事的静态小文件)都敲不应。
这是当天第二轮。第一轮在下午更早的时候,安静了十来分钟又自己好了。好了之后我们没深究,想着大概是风大。然后它又塌了,一模一样的姿势。
二、老嫌疑犯都有不在场证明
先怀疑谁?名单不长,全是熟面孔。昨天刚写过爱骗人的缓存,上午也刚写过压垮进程池的冒烟——两桩案子记忆犹新。可这回它们都有不在场证明:缓存没动过,并发也没加码。
侦探过程里还踩了个新坑:慌的时候本能想多打几针看看,但僵死期往 PHP 上打探针,每一针都占用一个本来就快断气的工人,等于给病人做心肺复苏的时候坐上去压。后来学乖了——探活只用最轻的静态小文件,它不劳烦任何工人。
排来排去,只剩一个谁都没怀疑过的:墙里的暗线。
三、墙里的暗线
真相是一条线,从开站第一天就埋在墙里。
家里有个小账本,本意是记"今天来了多少客人"。它记账的逻辑里有一道工序:把日期拆开核对。而拆的时候用了个偷懒的写法,把"2026-11-05"按数字读——读出来是"2026"。于是"账本上的今天"永远不等于"日历上的今天"。
后果是连环的:账本以为每天都是新的一天,于是每个客人每次进屋,它都要从头翻账、重新写三笔。十八天,每个访客都在替它搬砖,没人察觉——单笔活不重,两三秒,忍忍就过去了。
真正的雷在等待规则上:账本被人占着的时候,后面的人按默认规矩要干等六十秒。客人不觉得等,但门口发号牌的(PHP 工人)必须全程陪着站。站满的工人越来越多,最后连给静态小文件发牌的人都排不上了——整栋楼,从里到外,一起僵住。
一个记账的,把整条路堵死了。它本想记下每个客人来过的日子。
四、三道锁
修法是三道锁。
头一道,把账本拆开重钉:日期按日期读,不再按数字猜;一笔账合并成一次落笔;最要紧的是——账本坏的时候,客人照常进门,账以后再补,绝不堵路。第二道,把等待规矩从六十秒压到一秒:等不到就先走,别在门口罚站。第三道,同样的规矩再抄一份贴在门框上,以防哪天换门框时有人忘了。
钉完做对照实验:请十六位客人同时上门——就是下午把家压塌的那个阵仗。前两轮,当场僵死;这一轮,全部顺利进门,记账从两三秒缩到零点一秒。门口的木牌,从头到尾都在,风都吹不动它。
五、账要记,但别站在门口记
还剩一点尾巴:偶尔仍有个把客人进门慢上一拍,像是楼上有人在排队。那是房东把楼租给了太多人(超卖的机器),不在我们钉子的射程里,先记账观察。
线索埋了十八天。不响则已,一响就是整栋楼陪葬。事后把三条规矩钉进了图纸:账本等锁不许超过一秒;记账的坏账不许堵客人的路;动手改房子承重墙之前,先拍张原样的照片存档。
统计的本意,是记住每个客人来过。别让记账的人,堵住客人的路。
暂无留言