Gestion des délais lors de la récupération de fichiers depuis un serveur distant en PHP

Je travaille avec PHP pour accéder aux fichiers et aux photos des serveurs distants. J’utilise principalement les fonctions file_get_contents () et copy ().

Parfois, accéder à un petit fichier texte ou à une photo est presque instantané, mais d’autres fois, il semble “bloqué” pendant une minute sur le même fichier. Et parfois, mon script se bloque, et même lorsque j’arrête le script, Apache rest bloqué pendant plusieurs minutes.

Je suis tout à fait prêt à accepter le fait que les connexions Internet peuvent être floues. Mon souci est que je récupère gracieusement et que je ne plante pas Apache – la fonction PHP set_time_limit () ne renvoie qu’une erreur fatale. De plus, le manuel PHP indique que le temps passé sur les opérations de stream ne consortingbue pas à la durée d’exécution du script.

Comment puis-je me remettre de ces problèmes de connexion et permettre à mon script de continuer? Et pourquoi cela provoquerait-il un accrochage d’Apache?

Merci Brian

$options = array( 'http' => array( 'user_agent' => 'Firefox wannabe', 'max_redirects' => 1, 'timeout' => 10, ) ); $context = stream_context_create( $options ); $content = file_get_contents( $url, false, $context ); 

Jetez un coup d’oeil aux stream_context_create et HTTP Context . Le code ci-dessus définira un délai d’attente sur la connexion et permettra une redirection.

Cela devrait empêcher d’atteindre le délai d’attente.

Les longs délais peuvent être causés par le réseau ou par le serveur distant ayant un pare-feu vous refusant de saisir un trop grand nombre de fichiers à la fois ou par un serveur ou un routeur DNS flaky sur le chemin de l’hôte distant. À titre de suggestion, vous devez mettre en cache localement les fichiers téléchargés. Par conséquent, les fichiers de rafraîchissement suivants seront traités localement au lieu du grand réseau.