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

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
Ale když to upravím na menší tak se mi to taky nenahraje možná to upravuji nějak špatně :.(
Víťa 03.04.2020 13:16
Víťa
Možná ano.
Wikan 03.04.2020 13:33
Wikan
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
Ano myslel som phpinfo, ked ti nevypisuje tak sa asi dalej nepohneme.
fleg 03.04.2020 20:51
fleg
nevypisuje skript phpinfo.php (prázdná stránka) V tom skriptu máš doufám příkaz phpinfo()?
host 04.04.2020 10:10
host
Samozřejmě :-(
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.
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…
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…
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(); ?> **…
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…
hynajs 04.04.2020 08:00
hynajs
Muzes si vytvorit stream a postupne zapisovat do souboru treba po 20 MB. $maxlength = 20 * 1000 *…
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…
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