A counter on a school or club page
A school or club website is typically maintained by a single volunteer alongside other duties. Complex analytics platforms demand continuous training, while a standard image counter…
A counter on a parish website
A visitor counter on a parish website provides a baseline of visibility. When a community portal publishes the schedule for an upcoming festival or a gallery of recent events, the question…
One request in eighteen asks for a removed page
On 30 August this server answered 345,299 requests. 19,570 of them got a 410: gone, deliberately, not found missing by accident. That is one request in eighteen. What is behind them All of…
An endpoint that answers with nothing
There is a path on this server that does nothing. A rewrite rule catches it and returns 204: no content, no body, no work. On 30 August it was called 1,000 times. What it used to be The…
How long a wrong sentence survives
On 14 August a sentence went onto the about page saying that we deliberately do not measure bounce rate or time on page, because both would need a session followed across page views, and…
A bounce rate needs one bit, not a tracker
Until 28 August this site did not show a bounce rate, and the about page said that was deliberate: it would need a session followed across several page views, and that would need a consent…
The label check was measuring points, not pixels
A check written on 27 August reported 196 diagram labels as too wide for the picture they sit in. Working through them took a day. 103 of the 196 turned out to be an artefact of the check…
Six generations of counter address, all still answered
The address we document for a counter is /c/<number>-<design>.png. On 30 August it was asked for 156 times. The address from 2006 — /index.php?action=pic&s4uid=… — was asked for 80,499…
The check that is always true
There are 23 UPDATE statements in this service. Exactly one of them checks whether it changed anything. That check is: 'success' => $n->rowCount() >= 0 rowCount() returns 0 when no row…
Testing with curl tests the wrong thing
A counter request that arrives without a browser identity writes into two of the twelve places a counted visit normally touches. It answers 200. It returns a valid counter image. Nothing…
When adding an index makes things slower
The table of daily figures has one key: the counter and the date together. Five places in the code ask it a different question — not "this counter over time" but "all counters on these…
Why we can't count returning visitors
There is no returning-visitor figure anywhere in Stats4U. It is not missing because nobody got round to it. It was built, run once against real data, and taken back out on 27 August 2026,…