What are the best practices for using session_regenerate_id() in PHP to balance security and performance?

When using session_regenerate_id() in PHP, it is important to balance security and performance. This function regenerates the session ID to prevent session fixation attacks, but calling it too frequently can impact performance. To strike a balance, it is recommended to regenerate the session ID periodically or after a significant event, such as a successful login.

session_start();

// Check if session ID needs to be regenerated
if (!isset($_SESSION['last_regenerated']) || (time() - $_SESSION['last_regenerated']) > 3600) {
    session_regenerate_id(true);
    $_SESSION['last_regenerated'] = time();
}