Aşağıda verdiğim kodla XML'den gelen veriyi 1000'erli grup halinde timeout almadan veritabanına kayıt edebilirsin diye düşünüyorum. Deneyip haber verir misin?
<?php

$__DBHOST = "localhost";
$__DBUSER = "root";
$__DBPASS = "";
$__DBNAME = "xmltest";

try {
    $db = new PDO("mysql:host=$__DBHOST;dbname=$__DBNAME;charset=utf8", $__DBUSER, $__DBPASS);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
} catch (PDOException $e) {
    die("Veritabanı bağlantısı başarısız: " . $e->getMessage());
}

$xmlDosyaYolu = "test.xml";
$xml = simplexml_load_file($xmlDosyaYolu);

$veriSayisi = count($xml->item);
$batchSize = 1000;

for ($i = 0; $i < $veriSayisi; $i += $batchSize) {
    try {
        $db->beginTransaction();

        for ($j = $i; $j < $i + $batchSize && $j < $veriSayisi; $j++) {
            $veri = $xml->item[$j];


            $stmt = $db->prepare("INSERT INTO tablo_adi (sutun1, sutun2, sutun3) VALUES (:deger1, :deger2, :deger3)");
            $stmt->bindParam(':deger1', $veri->sutun1);
            $stmt->bindParam(':deger2', $veri->sutun2);
            $stmt->bindParam(':deger3', $veri->sutun3);
            $stmt->execute();
        }

        $db->commit();

    } catch (PDOException $e) {
        $db->rollBack();
        die("Hata: " . $e->getMessage());
    }
}

echo "OK";

?>