Help! XML bestand ophalen en verwerken
Ik moet een xml bestand van een beveiligde server downloaden, maar ik heb alles al geprobeert en het werkt op geen enkele manier.
Als ik het url gebruik dan krijg ik HTTP request 1.1. Dus geen toegang. Als ik het op deze manier probeer "http://loginnaam:paswoord@http://url.xml"
dan krijg ik de pagina van het hosting bedrijf waar mijn server is ondergebracht. Ook is bij de server waar ik het van ophaal ingesteld dat mijn server toegang heeft. Maar toch moet ik inloggen.
Weet iemand hier een oplossing voor die wel werkt? Ik ben er nu al een paar dagen mee bezig, maar niks werkt.
Alvast bedankt voor jullie tijd en hulp.
Gewijzigd op 01/01/1970 01:00:00 door Rico
2: Kijk eens naar
of begrijp ik de vraag verkeerd:S:S
Nou ja iig sterkte
een HTTP Request 1.1 en dus geen toegang. Als ik het via manier 2 doe dan kijg ik niet het bestand van url.xml te zien, maar de index pagina van mijn hostingbedrijf waar de site van mij staat.
Gerben: Ik ga eens kijken of het misschien lukt met dat header gedeelte.
Het bestand wordt aangemaakt door bedrijf X. Ik kan het bestand handmatig ook downloaden, maar dan moet ik inloggen voor ik toegang heb. De hosting staat er eigenlijk helemaal buiten, maar als ik het bestand van bedrijf X wil ophalen via file_get_contents om hem te verwerken dan krijg ik als ik alleen het url ingeef Gerben: Ik ga eens kijken of het misschien lukt met dat header gedeelte.
gooi even een betere topictitel, dit is phpHULP , de meesten komen hier voor hulp..
Bij ftp is het namelijk ook gewoon:
ftp://username:[email protected]
en niet ftp://username:password@http://site.com
Jeffrey: bedankt. Nu werkt het. Ik had wel het gevoel dat het iets simpels was waar ik overheen heb gekeken door alle code die ik de laatste weken heb gezien.
Het volgende probleem wat ik nu heb ik dat de server bij bestanden van 1.5mb wel een nette lijst laat zien, maar met een xml bestand van 50mb ineens niks laat zien. :S Hij lijkt het wel te verwerken, maar laat niks zien.
Gewijzigd op 01/01/1970 01:00:00 door Rico
Wes praat toch geen poep? Verzin even een toepasselijke titel op het gebied van php. Niet op het gebied van je hulp-vraag
Crispijn: ook aan jou reactie heb ik weinig helaas.
Nee? Is je probleem hier niet mee opgelost? Hmmm, ik dacht dat ik aardig kon php-en... :S
Probeer de inhoud van het xml bestand eens te echoën, en zie eens of dat wel goed gaat...
Ik heb er zelf geen ervaring mee, klinkt wel leuk om te implementeren. Ik zou het eerst proberen met cURL (http://nl3.php.net/manual/en/ref.curl.php).
Blanche schreef op 21.03.2008 15:15:
Probeer de inhoud van het xml bestand eens te echoën, en zie eens of dat wel goed gaat...
Het lijkt me niet slim om een bestand van 50mb in een echo te zetten. :D Maar ik weet iig dat het bestand wordt verwerkt, want met kleine bestanden die op precies dezelfde manier verwerkt worden werkt het wel. Blijkbaar is de grote een probleem. Ik heb al rondgezocht naar een oplossing om dat 50mb xml bestand in 2mb bestanden te verdelen, maar niks gevonden dat xml bestand splitst en werkt.
Quote:
Dat vermoed ik ook en daarom zou je moeten uitzoeken wanneer dat probleem optreedt. Als het wel lukt om het bestand te echoën, weet je namelijk dat het probleem niet zit in het inladen van het bestand. Blijkbaar is de grote een probleem.
Dat het echoën lang gaat duren, tja wat maakt dat uit. Het is toch maar eenmalig...
Ik heb het grote bestand nu lokaal op de server gezet en vanaf daar geprobeert, maar dan is ook weer hetzelfde probleem. Krijg een wit scherm :S
Gewijzigd op 01/01/1970 01:00:00 door Rico
Hoe ziet de code eruit die je nu gebruikt?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require_once('domit/xml_domit_include.php');
$doc =& new DOMIT_Document();
$success= $doc->loadXML("http://loginnaam:[email protected]");
$nodes =& $doc->documentElement->childNodes[0];
$node =& $nodes->childNodes;
$num =& $nodes->childCount;
for ($i = 0; $i < $num; $i++) {
$currentNode =& $node[$i];
$id =& $currentNode->getAttribute("ID");
$path =& $currentNode->getAttribute("path");
$cat =& $currentNode->getAttribute("cat_ID");
echo ("<tr><td>".$i."</td>");
echo ("<td>".$id."</td>");
echo ("<td>".$path."</td>");
echo ("<td>".$cat."</td></tr>");
}
?>
require_once('domit/xml_domit_include.php');
$doc =& new DOMIT_Document();
$success= $doc->loadXML("http://loginnaam:[email protected]");
$nodes =& $doc->documentElement->childNodes[0];
$node =& $nodes->childNodes;
$num =& $nodes->childCount;
for ($i = 0; $i < $num; $i++) {
$currentNode =& $node[$i];
$id =& $currentNode->getAttribute("ID");
$path =& $currentNode->getAttribute("path");
$cat =& $currentNode->getAttribute("cat_ID");
echo ("<tr><td>".$i."</td>");
echo ("<td>".$id."</td>");
echo ("<td>".$path."</td>");
echo ("<td>".$cat."</td></tr>");
}
?>
Met bestanden tot 1.6mb werkt het perfect, maar een bestand van 50mb geeft dus niks. Beide bestanden zijn hetzelfde qua indeling, alleen de grote is anders.
Uiteindelijk zullen de gegevens opgeslagen worden in een db. Dus het gaat maar om een eenmalige verwerking van het grote bestand, daarna zou hij elke dag om een bepaalde tijd de dagelijkse update moeten verwerken.
Gewijzigd op 01/01/1970 01:00:00 door Rico
Verder denk ik dat het slimmer is om dat bestand van 50mb wel vanuit hetzelfde bestandsysteem te laden. Als je dat vanaf een externe website wilt doen, wordt je script er wel een stuk trager op. Dan zou je beter nog eens in de zoveel tijd een ander scriptje kunnen draaien dat dat bestand automatisch update.
Ik heb ook al geprobeert het vanuit dezelfde dir te laten lopen. Maar dat maakt niks uit, hij blijft dan toch een wit scherm geven.
Had je het al met SimpleXML geprobeerd?
Ik heb nog wat getest, en het blijkt dat als er meer als 3000 nodes in het xml bestand staan er een probleem ontstaat. Aangezien er ruim 218000 nodes in het bestand van 50mb staan word dit lastig.
Weet iemand een manier zodat ik per 3000 nodes het bestand kan verwerken?
Gewijzigd op 01/01/1970 01:00:00 door Rico