controle op bestaande bestanden (PHP) met XML response
Ik ben aan het proberen een PHP-script te maken dat moet controleren of bepaalde bestanden bestaan (bv. video's op een bepaalde server). En het script zou dan een xml-response moeten teruggeven.
Dus het zou iets moeten zijn in het volgende formaat:
https://management.streaming.nl/scripts/support/checkfile.php?file=filename
Het resultaat is dan een XML bestand in volgend formaat:
<statuscheck>
<status>OK|NIETOK|ERROR</status>
<message>bericht</message>
</statuscheck>
Het CMS systeem zal iedere X seconden de status van de bestanden moeten controleren. En deze controle kan aangepast worden (bv. langere tijd etc.)
Gewijzigd op 13/04/2011 08:48:01 door Kenneth Dehouwer
niemand een idee?
Kun je je titel "PHP probleem" aub even aanpassen in een titel die het probleem beschrijft. De titel "PHP probleem" is nietszeggend.
edit: uitgebreider voorbeeld dat XMLWriter gebruikt om een antwoord in XML te geven:
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
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
function respond_xml($status, $message)
{
$out = new XMLWriter();
$out->openURI('php://output');
$out->setIndent(true);
$out->startDocument('1.0', 'ISO-8859-1');
$out->startElement('statuscheck');
$out->writeElement('status', $status);
$out->writeElement('message', $message);
$out->endElement();
$out->endDocument();
$out->flush();
}
function main()
{
header('Content-type: text/xml');
if (!isset($_GET['file']))
respond_xml('ERROR', 'file parameter missing');
else if (file_exists($_GET['file']))
respond_xml('OK', 'file exists');
else
respond_xml('NIETOK', 'file does not exist');
}
main();
?>
function respond_xml($status, $message)
{
$out = new XMLWriter();
$out->openURI('php://output');
$out->setIndent(true);
$out->startDocument('1.0', 'ISO-8859-1');
$out->startElement('statuscheck');
$out->writeElement('status', $status);
$out->writeElement('message', $message);
$out->endElement();
$out->endDocument();
$out->flush();
}
function main()
{
header('Content-type: text/xml');
if (!isset($_GET['file']))
respond_xml('ERROR', 'file parameter missing');
else if (file_exists($_GET['file']))
respond_xml('OK', 'file exists');
else
respond_xml('NIETOK', 'file does not exist');
}
main();
?>
edit: code clean-up
Gewijzigd op 13/04/2011 12:18:27 door Jelmer -
Toevoeging op 13/04/2011 10:19:13:
@ Jelmer rrrr: Bedankt hiervoor, nu kan ik al wel een beetje verder.
Maar nu was ik mij wel aan het afvragen hoe ik dit uitvoer of dit kan testen?
Het is namelijk lang geleden dat ik nog met PHP gewerkt heb.
De code die je nu moet gebruiken is die in main().
Ok, maar ik heb nu bijvoorbeeld een bestand op mijn bureaublad staan en ik wil testen of dit bestaat. Hoe kan ik dat dan doen?
Kan alleen als je PHP op windows draait.. maar moet je niet willen.
Wat wil je precies maken? Want ik krijg het idee dat je een deel-probleem van de verkeerde oplossing aan het oplossen bent.
"Ik ben aan het proberen een PHP-script te maken dat moet controleren of bepaalde bestanden bestaan (bv. video's op een bepaalde server). En het script zou dan een xml-response moeten teruggeven."
Ik heb dit getest en het werkt ook.
Maar nu zit ik namelijk met een ander probleem:
Het script zou eigenlijk eerst 5 keer de melding moeten geven van dat het bestand niet bestaat, en na de 5e keer zou hij moeten weergeven dat het bestand wel bestaat.
En er zou ook nog iets moeten inkomen dat hij een time-out geeft na dat hij het bestand niet vind na bv. 50 keer proberen.
Ik ben terwijl ook even nog aan het googelen naar antwoorden.
Bedankt
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
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
function respond_xml($status, $message)
{
$out = new XMLWriter();
$out->openURI("php://output");
$out->setIndent(true);
$out->startDocument("1.0", "ISO-8859-1");
$out->startElement("statuscheck");
$out->writeElement("status", $status);
$out->writeElement("message", $message);
$out->endElement();
$out->endDocument();
$out->flush();
}
function main()
{
header("Content-type: text/xml");
if (!isset($_GET["file"]))
respond_xml("ERROR", "File parameter missing");
else if (file_exists($_GET["file"]))
return respond_xml("OK", "File exists");
else
return respond_xml("NOT OK", "File does not exist");
}
main();
?>
function respond_xml($status, $message)
{
$out = new XMLWriter();
$out->openURI("php://output");
$out->setIndent(true);
$out->startDocument("1.0", "ISO-8859-1");
$out->startElement("statuscheck");
$out->writeElement("status", $status);
$out->writeElement("message", $message);
$out->endElement();
$out->endDocument();
$out->flush();
}
function main()
{
header("Content-type: text/xml");
if (!isset($_GET["file"]))
respond_xml("ERROR", "File parameter missing");
else if (file_exists($_GET["file"]))
return respond_xml("OK", "File exists");
else
return respond_xml("NOT OK", "File does not exist");
}
main();
?>
iemand?