Autor Zpráva
JardaB
Profil
Zdravím,

řeším následující problém. Na hostingu isol.cz mám k dispozici prakticky neomezeného crona a potřebuji spouštět několik scriptů na jiném hostingu. Řešil jsem tak, že na straně hostingu s cronem jsem si udělal soubory s obsahem:

<?php
Header ("Location: http://mojedomena.cz/cil.php");
?>
a tyto zadal do samotného crona

Vše funguje, ale u jednoho ze scriptů se nevykoná. Resp. k přesměrování dojde, ale nevykoná se celý kód. Obsahuje složitější dotaz do mysql, který má odezvu při testu kolem 0.5 - 1 s. Když spustím script ručně i přes header, tak se vykoná vždy do konce. Je snad tento způsob přesměrování chybný nebo existují jiné okolnosti, které tento proces ovlivňují?
N71
Profil *
Je možné, že webový cron má přísnější limity na dobu běhu. Zkus přidat do skriptu ignore_user_abort.
JardaB
Profil
N71:
Vypadá to, že to pomohlo. Budu ještě testovat, případně se ozvu. Moc děkuji..
blaaablaaa
Profil
Já když volám přes curl skripty a nechci čekat na výsledek, v hlavičce vrátím:
header("Connection: close\r\n"); 
header("Content-Encoding: none\r\n");
header("Content-Length: 1");
ignore_user_abort(true);
JardaB
Profil
blaaablaaa:
Díky, zkusím...
N71
Profil *
blaaablaaa:
V podstatě prasárna.

Nové řádky do hlaviček nepatří (PHP ti je odřeže). A s nesprávným (falešným) Content-Length můžou být akorát problémy. Stačí neposlat nic a browser na ten tvůj jeden byte bude čekat klidně až do timeoutu. Správně bys měl vrátit kód 204 No Content, ale především si pohlídat, aby PHP nepoužilo buffer a vrátilo hlavičky ještě před časově náročnou operací.
Mlocik97
Profil
N71:
súhlas.
blaaablaaa
Profil
N71:
Nové řádky beru.

Používám to, když uživatel nahraje fotku, kterou takto na pozadí zmenšuji (nahraje fotku, ja přes curl si zavolám tuhle stránku, nechám vypršet a nečekám na výsledek). Vím, že bych normálně měl použít nějakou MQ a řešit bokem, ale tady zrovna není k dispozici.

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:

0