まず、マニュアルを読むと良いですよ。
session_regenerate_id(true)
が安全とは書いていません。
session_regenerate_id
delete_old_session
関連付けられた古いセッションを削除するかどうか。 削除による競合を防いだり、セッションハイジャックを 検出/防ぐ 必要がある場合には、古いセッションを削除すべきではありません。
とあり、さらに以下の記述もあります。
警告
現在の session_regenerate_id は、不安定なネットワークをうまく扱えません。 たとえば、モバイルネットワークや WiFi ネットワークです。 よって、 session_regenerate_id を 呼ぶことで、セッションの消失を経験するかもしれません。
すぐに古いセッションデータを破棄すべきではありませんが、 古いセッションID のタイムスタンプと、 アクセス制御は破棄すべきでしょう。 さもないと、ページへの同時アクセスによって、 状態の不整合が発生したり、セッションが失われたり、 クライアント(ブラウザ) 側のレースコンディションが発生したり、 不必要なセッションIDをたくさん作らなければならなくなるかもしれません。 セッションデータをすぐに破棄してしまうと、 セッションハイジャックの検出だけでなく、 防止もできなくしてしまいます。
session id を生成(再生成)するタイミングは、何らかの機密情報を session に保存する直前(例えば、認証済みの印を保存する等)が適切ですが、その際、必ずしも古い session id を破棄する必要は無いです。