Sì, è possibile. È un classico caso di condizione razziale.
La rapida spiegazione:
È possibile che 2 richieste simultaneamente supera il primo controllo, ottieni $num == 0
ed entrambi inseriscono una nuova riga.
Per eliminarlo devi creare un UNIQUE
vincolo che copre (user_id, ip, date)
colonne
La lunga spiegazione: