MySQL nie zwraca ostatniego identyfikatora wstawiania jednej sesji do innej sesji.
http://dev.mysql .com/doc/refman/5.6/en/information-functions.html#function_last-insert-id mówi:
Odpowiedz na swoje komentarze:
Takie było zachowanie MySQL od samego początku. Zwrócenie ostatniego identyfikatora insertu byłoby całkiem bezużyteczne, gdyby było podatne na sytuację wyścigu, to znaczy, gdyby wstawki w innych sesjach mogły zanieczyścić twoją sesję.
Jedną z możliwości jest to, że używasz trwałych połączeń, ponieważ stare wersje PHP miały błąd, że połączenie mogło zostać nadane nowemu żądaniu PHP i przyznać dostęp do stanu o zasięgu sesji z poprzedniego żądania PHP. Innymi słowy, rzeczy takie jak blokady i transakcje, tabele tymczasowe i zmienne użytkownika oraz identyfikator ostatniego wstawienia mogą przetrwać do kolejnego żądania PHP. Te problemy powinny zostać rozwiązane w PHP 5.3 za pomocą sterownika mysqlnd; trwałe połączenie powinno zostać „zresetowane” do stanu początkowego.
Innym możliwym wyjaśnieniem jest to, że naprawdę działa poprawnie i mylisz się w swoich obserwacjach. Proponuję więc przetestować to ostrożnie i metodycznie.
aktualizacja: zgodnie z Twoją odpowiedzią , ten problem nie miał nic wspólnego z MySQL, PDO lub lastInsertId. Wygląda na to, że w ogóle nie widziałeś rozbieżności w wynikach kodu PHP. Widziałeś nieoczekiwane liczby w statystykach wydajności sieci w Narzędziach dla programistów Chrome.