Bonjour,

J'ai réalisé un script qui télécharge différents flux xml dans la nuit.
Ce script copie les flux sur mon dd, ce qui me permet de travailler ensuite avec cette copie.

Mon problème est que parfois mon script "mouline" sur un flux qui ne doit par répondre et du coup n'en fini jamais.

Comment pourrais-je insérer un timeout dans mon script, pour que si cela dépasse un certains temps de réponse, il passe au suivant.

Voici mon script
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
<?php
 
// Initialisation de variables
$ouv_destination = 1;
$ouv_source = 1;
$ecriture_destination = 1;
 
$url = "http://www.url-de-mon-flux.xml"; // url du flux
$flux = html_entity_decode($url, ENT_QUOTES, "UTF-8");
 
if($sourcexml = fopen($flux,'r')) // Si ouverture du flux en lecture seul ok.
{
	if($destxml = fopen('flux-xml/test.xml','w+')) // si ouverture destination en ecriture ok.
	{
		$page = "";
		$i=0; // Nb de lignes.
 
		while (!feof($sourcexml)) // on parcourt toutes les lignes
		{ 
			$page .= fgets($sourcexml, 10000); // lecture du contenu de la ligne
			$i=$i+1; // nb de lignes+1.
 
			if ($i > 100)  // Si j'ai lu 100 lignes.
			{
				if(memory_get_usage() > 1000000)  // Si la memoires depasse 1000000 bytes.
				{
					fwrite($destxml,$page); // J'enregistre ce que j'ai déja lu.
					$page = ""; // Je libére de la mémoire.
				}
 
				$i=0;// Nb de lignes a zero et c'est repartie.
			}
 
		} // Fin du while du parcours du flux.
 
		if(!fwrite($destxml,$page)) $ecriture_destination = 0;
 
		// Fermeture de la source et de la destination.
		fclose($destxml);
		fclose($sourcexml);
	}
 
	else  // Si je n'ai pas réussi a ouvrir le fichier de destination.
	{
		$ouv_destination = 0;
	}
 
}
 
else  // Si je n'ai pas réussi a ouvrir le flux
{
	$ouv_source = 0;
}
?>
Merci d'avance.