Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP memory_limit 64MB

Zdravím
Může mi někdo vysvětlit když mám na frehostingu php skript

<?php
file_put_contents('Jmeno.mp3', file_get_contents('http://icecast2.play.cz/croregion128.mp3', NULL, NULL, 0, 60 * 60 * 16 * 1024));"
?>

jestli se nemýlím tak je to záznam dlouhý 1 hodinu
dlouho mi to fungovalo mi to fungovalo ale už mi to delší dobu nefunguje obrátil jsem se na fórum tohoto frehostingu a tam mi bylo doporučeno abych upravil skript aby nepřesahoval memory_limit 64MB a proto že se v tom nevyznám tak se ptám tady díky

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Je mozne, ze hosting upravil maximalnu velkost suboru na svojom php servri, takze nekaceptuje vacsie…
fleg 03.04.2020 12:57
fleg
Daj si vypisat ake mas nastavenia php servera. Myslíš phpinfo() a co tam hledat nebo do jaké části…
Víťa 03.04.2020 16:44
Víťa
nevypisuje skript phpinfo.php (prázdná stránka) V tom skriptu máš doufám příkaz phpinfo()? nový
host 04.04.2020 10:10
host
Samozřejmě :-( nový
Víťa 04.04.2020 10:20
Víťa
U některých uživatelů některé samozřejmé věci tak samozřejmé nejsou. Proto se radši ptám. nový
host 04.04.2020 10:29
host
Tak další záhada když to zkusím ve firefox tak mě se ukáže prázdná stránka ale ve google chrome neex… nový
Víťa 04.04.2020 17:24
Víťa
Kámo to bude tím že ten " soubor" je nekonečný, je to trochu hack, jak udělat streamování , ale přek… nový
kapole 07.04.2020 11:33
kapole
Já jsem se asi špatně vyjádřil jedná se o ten skript kde je funkce phpinfo <?php phpinfo(); ?> **… nový
Víťa 07.04.2020 13:33
Víťa
Kdybys měl právo zvýšit memory_limit, pak jej prostě zvýšíš. Jenže je nemáš. Zkus pohledat jiné možn… nový
hynajs 04.04.2020 08:00
hynajs
Muzes si vytvorit stream a postupne zapisovat do souboru treba po 20 MB. $maxlength = 20 * 1000 *… nový
dnsaa 05.04.2020 19:37
dnsaa
Nevím jak je to možné že to mohlo fungovat, protože je to podle mě dost netradiční řešení. ten strea… nový
kapole 07.04.2020 11:29
kapole
Pardon, 50MB asi poslední
kapole 08.04.2020 14:32
kapole

Daj si vypisat ake mas nastavenia php servera.

Myslíš phpinfo() a co tam hledat nebo do jaké části toho výpisu se mám soustředit? díky
edit jedná se o webzdarma a teď zjišťuji že mě nevypisuje skript phpinfo.php (prázdná stránka) a na jejich fóru se to hemží problémy poslední dobou ::)

Kámo to bude tím že ten " soubor" je nekonečný, je to trochu hack, jak udělat streamování , ale překvapivě je to deadly simple, ale právě problém s tím mají programy, kteří čekají soubor o konečné délce a stahují do konce.
otevřeš li to v přehrávači, tak začne hrát ihned.

Já jsem se asi špatně vyjádřil jedná se o ten skript kde je funkce phpinfo

<?php
phpinfo();
?>

*******************************************************************
dnes se mi ta hodina nahrála tento skript zafungoval ::)
<?php
file_put_contents('Jmeno.mp3', file_get_contents('http://icecast2.play.cz/croregion128.mp3', NULL, NULL, 0, 60 * 60 * 16 * 1024));"
?>
poz.
a ještě jsem si smazal nechtíc v PSPad záložku FTP jak to napravit ? díky

Muzes si vytvorit stream a postupne zapisovat do souboru treba po 20 MB.


$maxlength = 20 * 1000 * 1000; // 20 MB?
$offset = 0;

// otevrit si stream pro zapis do souboru
// otevrit si stream pro cteni ze souboru
if ($stream = fopen('http://www.example.com', 'r')) {    
    // ziskat 20MB z celkove velikosti souboru
    $content = stream_get_contents($stream, $maxlength, $offset);
    
    // TODO: zapsat do streamu zapisovaneho souboru
    // TODO: flush streamu pro zapis, aby se uvolnila pamet
    // TODO: zkontrolovat, jestli jeste zbyvaji dalsi data
    // jestli $content.length != $maxlenght, tak uz tam dalsi content neni

    fclose($stream);
}

PS: V PHP nedalam a nemam cas udelat fungujici priklad, takze prilozil alespon navod jak toho docilit. Nikdo jiny nevidel problem v tom, ze se do pameti nacita cely soubor...

https://www.php.net/manual/en/function.file-get-contents.php

Nevím jak je to možné že to mohlo fungovat, protože je to podle mě dost netradiční řešení. ten stream "kape rychlostí" 16 kB/s 128kbps. takže to vychází na hodinu stahování . (540MB asi) A to znamená, že skripty bude běžet hodinu a to je šílenost, povolit někde na hostingu takhle dlouhou dobu. běhu. Někde na vlastním serveru nebo na localhostu není problém....

Ostatně, tohle je dost zajímavá otázka, jak stahovat soubory, jejichž stažení trvá dlouho z podstaty (minuty až hodinu), na vzdáleném PHP serveru. Věděli byste. Napadá mě jen jako v dalším nezávislém procesu tuším exec,cmd,system (wget, s parametry url a maximální délky souboru nebo maximální délky běhu programu

Napadá má, že mohlo dojít ke změně na icecast2.cplay.cz

čili problém možná je sekundárně v max.limitu souboru () ale především v max_execution_time

teď se dívám na ukázku a nedivím se, že ti to shoří: ty to děláš nejhloupějším způsobem: stahuješ obsah souboru do proměnné a potom zapisuješ. takže rada hostéra maséra byla v pořádku, předělat to aby to nežralo celou paměť )

podívat se na php.net , klidně na tu funkci file_get contents a tam uvidíš související funkce pro práci se soubory a najít takovou, která rovnou zapíše, co přečte. A nebo to rozkouskovat (trochu zasterale pomocí while, kdy velikost bufferu přsáhne např 4MB, provést zápis v režimu append)

Zpět do poradny Odpovědět na původní otázku Nahoru