Autor Zpráva
hanser
Profil *
Zdravím... mám tu takový problém. Pomocí fread() otevírám XML soubor, který se přímo na tom stejném serveru i generuje. Bohužel, při generování vzniká prodleva a parsování XML tak skončí chybou. Na testovacím serveru doma jsem to řešil tak, že jsem do cesty k XML souboru přidával celé URL a PHP tak čekalo na načtení celého souboru, ovšem na hostingu už to nelze, protože je tam fread() z URL zakázané. Nevíte jak to vyřešit? Díky moc...
Chro
Profil
Jestli jsem to pochopil správně, potřebuješ před čtením souboru chvíli počkat. Před funkci fread() zkus dát funkci:
usleep(100000);
//skript si nyní dá pauzu na 0.1 sekundy
//20000 => skript by si dal pauzu na 0.02 sekundy
Alphard
Profil
Nejsem si jistý, jestli to dobře chápu, ale jestliže funkcí fread() načítáte obsah souboru přes file systém, načítá se jeho skutečný obsah, ne to, co generuje.
To znamená, že zatímco přes "celé URL", tedy http požadavek, se načítal výstup scriptu (XML), přes file systém se načte php kód (hádám, to už z uvedených informací nelze s jistotou zjistit) a parsování xml logicky selže.
hanser
Profil *
Alphard:
Aha, na tom asi něco bude... taky mi to už teď dochází. Nu, asi budu muset najít jiný způsob, protože poskytovatel mi URL nechce povolit...
Alphard
Profil
Při nejhorším může výpis zachytit v bufferu, ale lepší by bylo přepsat generovací script tak, aby přímo nevypisoval, ale vracel výstup do nějaké proměnné.
DoubleThink
Profil *
hanser:
protože poskytovatel mi URL nechce povolit
Provozovatelé jsou často pitomci a zapomínají na cURL, zkus ten.
hanser
Profil *
DoubleThink:
Fajn, cURL byl dobrý nápad - s XML to funguje parádně. Ale pak se snažím z HTTP zpracovávat obrázky a tam už to nefunguje správně...
ob_start();
                      
$ch=curl_init();
curl_setopt($ch,CURLOPT_BINARYTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_URL,$img_file);
$img=curl_exec($ch);
curl_close($ch);
                      
imagejpeg($img, $cil, 100);
                      
ob_end_flush();

...tak tenhle script mi vypíše na obrazovku binární data stahovaného obrázku - nechápu, proč ho to neuloží... bez použití ob_start() skončí script bez jakékoli aktivity...
DoubleThink
Profil *
Chybí ti ještě CURLOPT_RETURNTRANSFER, takhle $img obsahuje jenom true a data jsou odeslány na výstup.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: