Autor Zpráva
Peet
Profil
Ahoj, chci se zeptat jestli někoho nenapadá zda je tento požadavek vůbec reálný:

mám například 20 xml feedů a nyní je potřebuju pomocí nějakého cronu projít. Hostuju u wedosu kde je execution_time 90s a individuání dlouhodobé navýšení není možné.

Když je projdu všechny najednou tak čas nestačí. Tudíž je nějaká možnost jak to obejít, aby spouštěl každý zvlášť ? Nemyslím tím zaregistrovat 20 cronů. Díky :)
Alphard
Profil
Lze je zpracovávat postupně. Script, který obstarává práci, si vždy před ukončením uloží (do souboru nebo databáze) stav, kde skončil a při dalším spuštění v práci pokračuje.
Zjišťováním času během výpočtu (funkce time()) lze kontrolovat stav a včas činnost přerušit.
snazimse
Profil
Peet:

Ale i tak je to moc 20 xml feedů na hosting s limitem 90 s, doporučuji VPS.To se možná nestihne zpracovat ani za den, záleží jak velká je důležitost aktuálních dat.
Peet
Profil
Alphard: To se mi zdá takové nic moc.. a musel by běžet třeba co 5 minut..

snazimse: Jeden obsahuje např 100-200 položek. Když si to pustím na localu tak proběhne zhruba za 5 minut, těch feedů bude ve finále mnohem víc, předpokládám tak 100. Takže ideální by pro mě bylo tak hodinka a půl execution time a jsem vysmátej, ale to je bohužel nereálné, pokud se nechci starat o vlastní hosting/vps.
Keeehi
Profil
Peet:
Pokud se ti 20*200 => 4000 položek zpracovává 5 minut, tak to je někde asi něco špatně. Kde tráví ten script nejvíe času?
Peet
Profil
Tak jsem to projel znovu, nyní mám 74 feedů, položek je tam 10 168. a doba behu byla 433,964s = 7,3 minut.. je to celkem dost.. protoze kdyz nactu jeden xml feed který má 3000 položek načte se velice rychle, ale když pak načítám jednotlivé feedy ve kterých bývá cca 150 položek tak to hold trvá dlouho..
Alphard
Profil
Navrhoval jsem normální zpracování fronty, nevím, co je na tom nic moc. Pokud nejde navýšit výpočetní výkon a neuvažoval jsem zrychlení samotného procesu, jiná možnost není. Se spouštění cronu každých 5 minut počítám, to přece není problém.

Druhá věc je optimalizace samotného načítání, jak už píše Keeehi. Ty feedy jsou online předpokládám, jak rychle se stahují? Jestli je script samotný rychlý jak tvrdíte a jen čeká na data, bylo by dobré stahovat je nějak paralelně (což není v PHP zrovna snadné).
Peet
Profil
Alphard:
Asi máte pravdu, potřebuju ty data invalidovat jednou denně, tudíž při stažení si uložím nějaký timestamp a budu např spuštět cron každých 5minut a vždy projedu jen ty které ještě nebyly aktualizovány daný den ->limit(1) a zinvaliduji ho. To si myslím, že by mohlo jednoduše vyřešit můj případ :)

edit:
resp. feedy, které obsahují jen těch 150 položek, můžu invalidovat po dvou tudíž by to nemuselo ve finále trvat ani několik desítek hodin.
snazimse
Profil
Peet:

150 položek čeho záleží jestli to je plaintext, tak to určitě není v pořádku.
Co tam stahujete za data, obrázky? Že to tak dlouho trvá. To vypadá na galerie obrázků, ta rychlost by zhruba mohla odpovídat.


nyní mám 74 feedů, položek je tam 10 168. a doba behu byla 433,964s = 7,3 minut
To je nějaký experiment 74 feedů, o tom jsem ještě neslyšel teda. Snad možná u nějakého slevového portálu např.
Já jsem to obcházel vždycky o pár sekund, ale 7 minut, takový execution nikde na sdíleném hostingu neexistuje.

Každopádně sdílený hosting, nešetříte zrovna teda.
Peet
Profil
74 feedů byl aktuální stav, který jsem měl, tudíž jsem na něm testoval. Je to z větší části plaintext ale i obrázky, jedná se o databáze zájezdů. Je mi jasné, že takový execution_time mi nikde nedají. Leda na VPS.. tudíž jsem se rozhodl vyzkoušet příklad s time() kde budu odchytávat dobu běhu a těsně před vypršením skript ukončím a za 5 minut zapnu znovu a bude pokračovat. Jiné řešení zkrátka není :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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