That sounds like a possible race condition when multiple requests are executing at the same time. Without knowing anything about the design, perhaps you could look into database transactions. You could also look into generating load via jmeter, but then we wouldn't get a picture.
pics
Rules:
1.. Please mark original photos with [OC] in the title if you're the photographer
2..Pictures containing a politician from any country or planet are prohibited, this is a community voted on rule.
3.. Image must be a photograph, no AI or digital art.
4.. No NSFW/Cosplay/Spam/Trolling images.
5.. Be civil. No racism or bigotry.
Photo of the Week Rule(s):
1.. On Fridays, the most upvoted original, marked [OC], photo posted between Friday and Thursday will be the next week's banner and featured photo.
2.. The weekly photos will be saved for an end of the year run off.
Instance-wide rules always apply. https://mastodon.world/about
Using SQLite seems to have solved it, but it's still bogged down by disk IO speeds. The only way I can induce errors right now is with benchmark tools, and that'll be solved if I use an in-memory DB hopefully.
Lmfao I didn't scroll all the way before tapping and thought this was a blurred NSFW post.
Operation freezing harbor.
PHP is a very clunky language, even with the improvements in PHP 7 and 8. I would recommend Rust, Python, or Javascript for a backend instead.
Also, I would recommend something like prometheus or opentelemetry for counting page views. Plenty of tooling available for those, you can even use them to count page views directly in nginx.
PHP is a very clunky language, however it slots right into Apache with no fuzz and that's very important. My Apache container needs to be as squeaky clean as possible. Rust and Python are not clean and JS doesn't have the functionality I need without installing more stuff anyway.
This is the only real issue I've ever had with PHP and it seems to have come down to me using a .txt file for a database and praying the underlying filesystem would just deal with it. It's been swapped for SQLite and none of the counters were reset overnight. Presumably that was the issue, and is thus not the fault of PHP.
My Apache container needs to be as squeaky clean as possible. Rust and Python are not clean
How is Rust not clean? You don't need to install Rust in your container - just compile your program and put the binary in the container, no installation of anything else needed.
Because now I have to compile rust and cross-compiling from Windows to Linux is a mess I don't wanna deal with. I don't want to spin up a whole container just to compile for Linux.
At any rate, the problem is solved and I'm just optimizing it for speed now, which is entirely disk IO so I'm converting it to using an in-memory DB and then it'll be fast enough to handle a thousand times more traffic than I've ever gotten.
I'm not a programmer, I'm just a photographer who doesn't wanna deal with chunky gallery systems.
Because now I have to compile rust and cross-compiling from Windows to Linux is a mess I don’t wanna deal with. I don’t want to spin up a whole container just to compile for Linux.
That's fair, though honestly cross-compiling Rust isn't that hard. You could also just use Windows Subsystem for Linux to compile for Linux. But totally fair using whatever works for you of course.