Fórum Root.cz

Hlavní témata => Server => Téma založeno: aeqwqeq 11. 08. 2018, 13:20:52

Název: file_get_contents caka na ukoncenie spojenia
Přispěvatel: aeqwqeq 11. 08. 2018, 13:20:52
Zdravim,

cez file_get_contents nasa webova aplikacia stahuje data zo vzdialenych serverov. Jeden zo zdrojov je problematicky. Data sa stiahnu v podstate okamzite ale ukoncenie spojenia nikdy neprebehne. Musi nastat az timeout (60s) aby spojenie bolo ukoncene.

Co to moze sposobovat? Predpokladam chybu na druhej strane. Ale cez wget/curl to bezproblemov funguje.

(https://pixhost.to/show/110/78270402_screenshot.png)
Název: Re:file_get_contents caka na ukoncenie spojenia
Přispěvatel: aeqwqeq 11. 08. 2018, 13:21:15
(https://t22.pixhost.to/thumbs/110/78270402_screenshot.png) (https://pixhost.to/show/110/78270402_screenshot.png)
Název: Re:file_get_contents caka na ukoncenie spojenia
Přispěvatel: Kit 11. 08. 2018, 13:52:42
Tak použij modul Curl, pokud ti nevyhovují bohaté možnosti nastavení file_get_contents() přes stream_context_create().
Název: Re:file_get_contents caka na ukoncenie spojenia
Přispěvatel: Papi 11. 08. 2018, 19:13:31
Doporučuji použít GuzzleHttp. Osobně celkem pěním, když vidím, že file_get_contents něco tahá ze vzdáleného serveru.
Název: Re:file_get_contents caka na ukoncenie spojenia
Přispěvatel: Kit 12. 08. 2018, 13:45:00
Doporučuji použít GuzzleHttp. Osobně celkem pěním, když vidím, že file_get_contents něco tahá ze vzdáleného serveru.

Guzzle používá Curl, kterému stačí nastavit správné parametry.
Název: Re:file_get_contents caka na ukoncenie spojenia
Přispěvatel: Rob Ros 12. 08. 2018, 22:37:16
Neni to kvuli Keep-Alive?

http://php.net/manual/en/context.http.php#114867
Název: Re:file_get_contents caka na ukoncenie spojenia
Přispěvatel: Kit 13. 08. 2018, 03:14:36
Pokud by příčinou byl Keep-Alive, zkusil bych tohle:
Kód: [Vybrat]
<?php
$context 
stream_context_create([
    
'http' => [
        
'protocol_version' => 1.1,
        
'header' => [
            
'Connection: close',
        ],
    ],
]);
$data file_get_contents('https://www.example.com/'null$context);