Могу предположить, что проблема тут не в скрипте, а в том, что было два запроса.
Попробуй использовать в $data microtime() или rand() чтобы понять что это не запись была два раза, а именно был вызван метод два раза
Кроме этого, погуглить советую про flock и fclose