When ping is enabled, add a flag eg
ping_enabled=1 to all other tracking requests. In that case we'd know a ping request will follow to update log_visit.visit_last_action_time and time on site. Therefore, it is not needed to update these fields avoiding potential locks on log_visit, less IO, ...
Especially interesting once ping is enabled by default in https://github.com/matomo-org/matomo/issues/8225
Is this a change in behavior for visits that is coming in 4.0 ? I discussed this in #15179 where I expected last_action_time to be updated when using heartbeats.
I'm wondering since I have a plugin that updates a visits
visit_last_action_time with the timestamp present in the heartbeat.
Good point. Heartbeat is actually indeed not supposed to extend the visit by default and therefore will close the issue. Wasn't remembering that at the moment. It could be done if there was an option that it extends the visit but if it's not the default it wouldn't help too many.