You have two things going on (state and exact match).
First, apache+PHP (I'm assuming apache, but same thing applies to IIS and other stateless setups) don't run your script all the time, but only when requested. This causes the inconsistency that you are seeing, where the browser may not make the request exactly when you want it (too many factors as to why this will happen).
This can be better handled by running a PHP daemon to handle the 1 minute logging.
However, if you want to continue with this route, then you have to deal with inconsistent queries.
You can use a way that covers a "greater than" rather than exact match expression. In particular you can check when your CSV file was last changed via the stat function (mtime value): http://php.net/manual/en/function.stat.php and then if it has been longer than 59 seconds append to the file.
Browsers are known to be unreliable ways of timing, so I still recommend a daemon.