Witam,
Dostało mi się "w spadku" zadanie (w sumie tylko dokończenie). Muszę stworzyć skrypt który będzie pobierał z różnych serwerów pliki XML, a następnie zapisywał je na swoim "domowym" serwerze. Udało mi się napisać taki skrypt który pobiera z różnych wcześniej zdefiniowanych miejsc pliki XML, pobiera je i zapisuje u siebie. Kolejnym krokiem jest zapis do bazy (MySQL). Skrypt ogólnie dział, ale czaasami mu się zdarzy nawalić (najczęściej kiedy pliki XML mają jakieś błędy).

Kod mojego skryptu wygląda tak:

    <?
    set_time_limit(60000000000000000);

    include"funkcje.php";
    function pobierz_xml($co, $filename){
    echo "Pobieranie pliku: ".$co."<br>--- zapis w: ".$filename."<br>";
    $filename2=$filename.".tmp";
    $data=file_get_contents($co);
    $fp2=@fopen($filename2, 'w');
    $result=fwrite($fp2, $data);
    fclose($fp2);
    if ($result) {
    echo "Zakończono pobieranie pliku.Trwa formatowanie pliku...<br>";
    $fp2=@fopen($filename2, 'r');
    $fp1=@fopen($filename, 'w');
    while (!feof($fp2)) {
    $data=fgets($fp2, 1024);
    $data = str_replace(">Go&Play<", "><![CDATA[Go&Play]]><", $data); // olimp.sklep.pl   
    $data = str_replace(">http://www.proomo.pl/grafika/produkty/bc1400v&m.jpg<", "><![CDATA[http://www.proomo.pl/grafika/produkty/bc1400v&m.jpg]]><", $data); // proomo.eu
    if ($data==chr(13).chr(10)) $data=""; //proomo.eu
    $data = str_replace("V&M<", "V and M<", $data);
    $data = str_replace("V&S<", "V and S<", $data);
    $data = str_replace("C&C<", "C and C<", $data);               
    $data = str_replace("Wet&Dry<", "Wet and Dry<", $data);               
    $data = str_replace("Bed&Sofa<", "Bed and Sofa<", $data);               
    $data = str_replace("Click&Go", "Click and Go", $data);
    //$data = str_replace("\"", "&quot;", $data);
    $data = str_replace("&", " ", $data);
    //$data = str_replace(" < ", "  ", $data);
    //$data = str_replace(" > ", "", $data);
    $data = str_replace("´", " ", $data);
    $data = str_replace("'", " ", $data);
    $data = str_replace("‘", " ", $data);
    $data = str_replace("’", " ", $data);
    $data = str_replace("“", " ", $data);
    $data = str_replace("”", " ", $data);

    $data=ascii_only($data);
    $data6zn=substr(trim($data), 0, 6);
    if ($data6zn!="<pasaz" && $data6zn!="<loadO" && $data6zn!="</pasa" && $data6zn!="</load")
    fwrite($fp1, $data);
    }
    fclose($fp2);
    fclose($fp1);
    unlink($filename2);
    echo "Zakonczono formatowanie pliku...<br>";
    return true;
    } else {
    echo "Błąd: Nie udalo sie pobrać: ".$co." !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1<br>";
    return false;
    }
    }
    $czas = explode(" ",microtime());
    $poczatek = $czas[1] + $czas[0];
    echo "<head>";
    echo "<title>UPDATE Krok 1</title>";
    echo "</head><body>";
    echo "Praca wre....<br>";
    echo "<br>";
    $lockfile="/var/www/sc/tmp/aktualizacja_lockfile.tmp";
    if (file_exists($lockfile)) {
    $fmdate=filemtime($lockfile);
    $diff=time()-$fmdate;
    if ($diff>43200) {
    echo "<B>Błąd: DZIAŁANIE SKRYPTU NA INNEJ KONSOLI ZOSTAŁO PRZERWANE!</B><br>Było to możliwe, ponieważ skrypt został uruchomiony ponad 12 godz. temu....<br><br>";
    unlink($lockfile);
    }
    }
    if (file_exists($lockfile)) {
    $fmdate=filemtime($lockfile);
    $diff=time()-$fmdate;
    echo "<b>Błąd: SKRYPT OD ".$diff." SEKUND PRACUJE NA INNEJ KONSOLI! </b><br>Spróbuj ponownie za kilka minut!!! <br><br>";
    die;
    }
    $fp_lock=@fopen($lockfile, 'w+');
    if ($fp_lock) {
    $ip = getenv('REMOTE_ADDR');
    $data=date('Y/m/d H:i:s')." IP:".$ip."\n";
    fwrite($fp_lock, $data);
    fclose($fp_lock);
    }else{
    echo "<b>Błąd: NIE UDAŁO SIĘ UZYSKAĆ DOSTĘPU DO DYSKU w celu utworzenia pliku! </b><br><br>";
    die;
    }
    set_time_limit(90000000);
    echo "Maksymalny czas pracy skryptu: ";
    $max=ini_get('max_execution_time');
    echo "$max s.<br>";
    flush();
    $id = (int)$_GET["id"];
    include"config.php";
    if ($kkkkkkk=="") {
    if ($id)
    $result_sklep=mysql_query("SELECT id, nazwa, login, xml_url, xml_typ FROM t_sklep WHERE id = '$id' AND dostepny='1'", $db);
    else
    $result_sklep=mysql_query("SELECT id, nazwa, login, xml_url, xml_typ FROM t_sklep WHERE dostepny='1'", $db);
    while ($row_sklep=mysql_fetch_assoc($result_sklep)) {
    $sklep_id=$row_sklep['id'];
    $sklep_nazwa=$row_sklep['nazwa'];
    $sklep_login=$row_sklep['login'];
    $sklep_xmlurl=$row_sklep['xml_url'];
    $sklep_xmltyp=$row_sklep['xml_typ'];
    echo "<br>**** SKLEP: ".$sklep_login."<br>";
    flush();
    $dir="/var/www/p/s/data/".$sklep_login."/";
    if (!is_dir($dir)) {
    mkdir($dir, 0777);
    echo "*** Utworzono katalog ".$dir."<br>";
    }
    if (is_dir($dir)) {
    $filename=$dir."update.xml";
    pobierz_xml($sklep_xmlurl, $filename);
    }else{
    echo "*** UWAGA: BRAK KATALOGU: ".$dir."<br>";
    }
    $czas = explode(" ",microtime());
    $koniec = $czas[1] + $czas[0];
    echo sprintf("%0.5f",$koniec-$poczatek)." s.<br>";
    flush();
    }
    echo "<br>Zakończono etap 1<br>";
    }else{
    echo "UWAGA: Nie udało się nawiązać połączenia z bazą danych!<br>";
    }
    unlink($lockfile);
    ?>
    </body></html>

plik funkcje.php znajduje się pod tym adresem: http://scanerwww.pl/funkcje.txt
a skrypt zapisujący plik XML do bazy danych tutaj: http://scanerwww.pl/2.txt
wygenerowany plik XML: http://www.scanerwww.pl/update.xml
działanie skryptu wgrywającego można zobaczyć tutaj: http://scanerwww.pl/2.php

jak widać po błędach (skrypt 2.php) jest problem z plikiem XML :/
w firefoxie w źródle strony pokazuje mi się momentami różne dziwne rzeczy:(
i plik XML nie zapisuje mi się w bazie :(

Pomożecie mi z tym?? bo ja już nie wiem co z tym zrobić:(((

Z góry WIELKIE dzięki za pomoc :)