Kod bu : dosya varmı yok mu dosya güncell mi değil mi kontrolü , doğru çalıştığında ve hata olduğundada mail gönderiyor. Saçma olan localinde 1 dk web server da 1 saaati geçiyor.
<?php 
ob_start();
define('IN_SITE', true); 
ini_set('memory_limit', -1);
include ("includes/conn.php");
@baglan();
$z = new XMLReader;
$dosyaadisi = "denemexmldepo/LX02.xml";
$z->open("$dosyaadisi");



/* mail gonder */

 date_default_timezone_set('Etc/UTC');
require 'phpmailler/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 0;
$mail->CharSet = 'UTF-8';
$mail->Debugoutput = 'html';
$mail->Host = "mail.deneme.com";
$mail->Port = 25;
$mail->SMTPAuth = true;
$mail->Username = "web@deneme.com";
$mail->Password = "deneme@123";



$recipients = array(
 'deneme@deneme.com' => 'deneme'   
);

        
foreach($recipients as $email => $name)
{
   $mail->addAddress($email, $name);
}
?>
<html>
<head>
<meta charset='utf-8' />
<meta name="robots" content="noindex" />
<meta http-equiv="Cache-control" content="no-cache" />
</head>
<body>
<?php
if(file_exists("$dosyaadisi"))
{

date_default_timezone_set('Europe/Istanbul');


$last_time_modified = filemtime($dosyaadisi);  // datemodified bilgiyi gösteren fonksiyon
$ftpuzamani = date("Y-m-d h:i:s",$last_time_modified);
$last_mod =  "<br />Değiştirilme Zamanı " . $ftpuzamani."<br />"; 
echo $last_mod;  

$sqlms = "Select * from xmllog order by id desc  limit 0,1";
$Sorz = @mysql_query( $sqlms );
$kataas = @mysql_fetch_array($Sorz);

if($kataas['xmlftpdate']!=$ftpuzamani) {
$sorgu = mysql_query("TRUNCATE TABLE stok");
$q = mysql_query($sorgu); 
    
    echo $kataas['xmlftpdate']."_____".$ftpuzamani;

$doc = new DOMDocument;

// move to the first <product /> node
while ($z->read() && $z->name !== 'veri');


$arraylabunu = "MATNR,CHARG,VERME";
$arrayla= explode(",",$arraylabunu);
$arraysay  = count($arrayla);
echo $arraysay;

$baslangisdate = date('Y-m-d h:i:s');
$xmllogbir = "Insert Into xmllog Values ('','stok','0','','','$ftpuzamani','$baslangisdate','','0')";
$Eklexml = @mysql_query($xmllogbir);
$websid = mysql_insert_id();  

// now that we're at the right depth, hop to the next <product/> until the end of the tree
while ($z->name === 'veri')
{
    // either one should work
    //$node = new SimpleXMLElement($z->readOuterXML());
    $node = simplexml_import_dom($doc->importNode($z->expand(), true));

  ob_start(); 
for ( $say=0 ; $say < $arraysay ; $say++ )
{
echo "'".$node->$arrayla[$say]."',";
}
$arrayapca = ob_get_clean();
$karaktersaya = strlen($arrayapca);
$karektereksia = $karaktersaya-1;
$mbsuble = substr($arrayapca,0,$karektereksia);

$SQLzs = "Insert Into stok Values ($mbsuble)";
$ekleares= @mysql_query( $SQLzs );

    // go to next <product />
    $z->next('veri');
}

$bitisdate = date('Y-m-d h:i:s');

$SQLtm = "SELECT mid FROM stok";
$istvidtm = @mysql_num_rows(mysql_query( $SQLtm ));

//Set the subject line
$mail->setFrom('web@deneme.com', 'deneme xml stok');
$mail->addReplyTo('web@deneme.com', 'deneme xml stok');
$mail->Subject = 'xml stok guncelleme '.$bitisdate.'';

$body = '<b style="color:green;">Stok güncellendi.</b><br /><br />
<b>Ftp dosya yüklenme zamanı:</b> '.$ftpuzamani.'<br />
<b>Güncelleme Başlama Tarihi:</b> '.$baslangisdate.'<br />
<b>Güncelleme Bitiş Tarihi:</b> '.$bitisdate.'<br />
<b>Toplam Kayıt:</b> '.$istvidtm.'<br />
';

// HTML okuyamayan mail okuyucularda görünecek düz metin:
$textBody = "Bu mail SMTP server ile gönderilmiştir.";

$mail->Body = $body;
$mail->AltBody = $textBody;

if ($mail->Send()) { $senddi = "1"; Echo ("gönderildi");}

 
else {  $senddi = "0";  Echo ("gönderilmedi"); }
/* email  end */




$xmlayari = @mysql_query("Update xmlayar Set stok = '$bitisdate' where id='1'"); 
$xmllogiki = @mysql_query("Update xmllog Set udatefinish = '$bitisdate',emailsend = '$senddi', kayit = '$istvidtm' where id='$websid'"); 


}
else {
    // ftp ile esit guncellememis ftp deki dosyayi
    
$mail->setFrom('web@deneme.com', 'deneme xml stok HATA!');
$mail->addReplyTo('web@deneme.com', 'deneme xml stok HATA!');    
$mail->Subject = 'xml stok GUNCELLENMEDİ!! '.$bitisdate.'';

$body = '<b style="color:red;">Stok güncellenmedi.</b><br /><br />
<b>Ftp dosya yüklenme zamanı:</b> '.$ftpuzamani.'<br />
';

// HTML okuyamayan mail okuyucularda görünecek düz metin:
$textBody = "Bu mail SMTP server ile gönderilmiştir.";

$mail->Body = $body;
$mail->AltBody = $textBody;

if ($mail->Send()) { $senddi = "1"; Echo ("gönderildi");}
else {  $senddi = "0";  Echo ("gönderilmedi"); }
/* email  end */
$baslangisdate = date('Y-m-d h:i:s');
$xmllogbir = "Insert Into xmllog Values ('','stok','1','ftp güncel değil','','$ftpuzamani','$baslangisdate','$baslangisdate','$senddi')";
$Eklexml = @mysql_query($xmllogbir);    
    
}

}
else {
    echo "dosya yok<br/>";
    $mail->setFrom('web@deneme.com', 'deneme xml Stok HATA Dosya Yok!');
$mail->addReplyTo('web@deneme.com', 'deneme xml Stok HATA!');    
$mail->Subject = 'xml Stok GUNCELLENMEDİ!!  Dosya Yok '.$bitisdate.'';

$body = '<b style="color:red;">Stok güncellenmedi.  Dosya Yok</b><br /><br />
<b>Ftp dosya yüklenme zamanı:</b> '.$ftpuzamani.'<br />
';

// HTML okuyamayan mail okuyucularda görünecek düz metin:
$textBody = "Bu mail SMTP server ile gönderilmiştir.";

$mail->Body = $body;
$mail->AltBody = $textBody;

if ($mail->Send()) { $senddi = "1"; Echo ("gönderildi");}
else {  $senddi = "0";  Echo ("gönderilmedi"); }
/* email  end */
$baslangisdate = date('Y-m-d h:i:s');
$xmllogbir = "Insert Into xmllog Values ('','Stok','1','dosya yok','','$ftpuzamani','$baslangisdate','$baslangisdate','$senddi')";
$Eklexml = @mysql_query($xmllogbir);  
    
    
}
?>
</body>
</html>
burda örnek xml dosyası :
<?xml version="1.0" encoding="utf-8"?>
<veriler>
<veri>
<MATNR>20000003</MATNR>
<CHARG>0001015759</CHARG>
<VERME>55555,000</VERME>
</veri>
<veri>
<MATNR>20000003</MATNR>
<CHARG>0001015758</CHARG>
<VERME>500,000</VERME>
</veri>
<veri>
<MATNR>20000003</MATNR>
<CHARG>0001015757</CHARG>
<VERME>500,000</VERME>
</veri>
<veri>
<MATNR>20000003</MATNR>
<CHARG>0001015756</CHARG>
<VERME>500,000</VERME>
</veri>
</veriler>