Běh skriptu v časových intervalech PHP

andy

Re:Běh skriptu v časových intervalech PHP
« Odpověď #15 kdy: 08. 02. 2016, 23:51:06 »
No jednoducho. Kupis si VPS alebo to das do nejakeho toho cloudu. Budes mat aplikaciu, ktora bude ukladat tie data a bude raz za cas pushovat na php normalnym POST dotazom. Tak nemusis nic riesit s PHP hostingom, lebo ti byvaju 100 rokov za opicami..


mise

Re:Běh skriptu v časových intervalech PHP
« Odpověď #16 kdy: 09. 02. 2016, 01:15:19 »
Já jen nechápu, proč se bráníte využít k tomu jiný jazyk.


Php na není vhodná volba. PHP process má zpracovat požadavek a chcípnout, ale existují i jiné jazyky, jako Node, Python... Proč zbytečně ohýbat PHP aby se chovalo jako trvale běžící aplikace, když u jiných jazyků toho dosáhnete daleko efektivněji na pár řádků?

Ani se tolik nebráním a pochopil jsem, že php není asi dobrá cesta. Neumím další jazyky kromě C, trochu PHP a ještě méně JS. Problém bude také, že "server" běží na windowsu - to nemohu změnit. Další instalace serveru s jiným jazykem tam bude asi také problém a to nemluvím o přenostitelnosti na jiné PC. Uvažuju o malém programu, který mi načte data ze zařízení, a pak mi to zpracuje php i s webem. Je tam použit WAMP server. Nevím, zda lze v něm použít i jiný jazyk nebo je tam i nějaký program pro běh událostí kromě cronu.

i-PRESS

  • ***
  • 100
  • NodeJS, Python, Perl, Lua, PHP
    • Zobrazit profil
Re:Běh skriptu v časových intervalech PHP
« Odpověď #17 kdy: 09. 02. 2016, 10:59:13 »
Jasně, chápu..


Ono PHP je vhodné opravdu na request->response, ne na akce spouštěné na pozadí. Windows již roky nepoužívám, ale nevidím důvod proč by tam neměl node jet, viz třeba http://blog.teamtreehouse.com/install-node-js-npm-windows . vypadá to jednoduše, ale je pravda že jsem nezkoušel.


Můžete si vybrat samozřejmě jazyk co se Vám líbí, akorát v nodu mi to díky obrovskému množství balíčku dostupných přes npm přijde nejjednodušší a nejméně "ukecané". Ono ani to PHP a Apache by asi nebylo potřeba, Node má integrovaný webserver a umí bleskově servírovat obsah. Já mám v node celé backendy aplikací (administrace), akorát kvůli velkému počtu přístupů má předřazen NGINX jako proxy.


Nebál bych se toho, pokud alespoň základy JS chytnete, je na nodejs hromada tutoriálů a téměř vše co budete potřebovat již pravděpodobně někdo řešil Výodou je, že co je v PHP poměrně složité, v node je to na pár řádků. Pokud už se rozhodnete se do toho pustit, otevřou se Vám navíc obrovské možnosti tvorby trvale běžících aplikací a výkon nodejs/php je nesrovnatelný.


Totéž samozřejmě můžete třeba v Pythonu, určitě na Windows fungovat bude, akorát se mi tam nelíbí práce s knihovnami (Websocket atd), takže mám node raději :)

Kit

Re:Běh skriptu v časových intervalech PHP
« Odpověď #18 kdy: 09. 02. 2016, 12:18:44 »
Ono PHP je vhodné opravdu na request->response, ne na akce spouštěné na pozadí.

Ono ani to PHP a Apache by asi nebylo potřeba, Node má integrovaný webserver a umí bleskově servírovat obsah.

... a výkon nodejs/php je nesrovnatelný.

Tohle už dávno není pravda.

  • PHP umí běžet na pozadí a nemá s tím problémy. Dokonce i GC umí uklízet.
  • PHP má rovněž integrovaný webserver a také umí bleskově servírovat obsah.
  • Porovnání výkonu Node.JS vs. PHP by chtělo nějaký věrohodný odkaz nebo alespoň vlastní benchmarky.

Re:Běh skriptu v časových intervalech PHP
« Odpověď #19 kdy: 09. 02. 2016, 12:37:21 »
Mne php skript beží ako démon na ubuntu serveri cez malý config pre upstart. V skripte sleepujem koľko treba. Určite to ide spraviť aj vo windowse. Skúsenosti nemám, google napovedal napríklad http://sourceforge.net/projects/runasservice/


Re:Běh skriptu v časových intervalech PHP
« Odpověď #20 kdy: 09. 02. 2016, 12:50:56 »
Správné řešení neexistuje - je třeba vždy porovnat požadavky, možnosti, zkušenosti, cenu, rizika... atd.

Souhlasím, že php nebylo pro trvalý běh navrženo, ale pokud ho dobře umíte nebudete mít problém napsat skript, který udělá co je potřeba a který budete spouštět třeba z plánovače windows. Taky to bude fungovat. Dejte pozor na souběh dvou instancí, skript by měl zřejmě běžet jen jednou.

Pokud je na vyzvednutí údajů měření nějaké web rozhraní, lze udělat jednoduchého klienta, který to bude pravidelně "naklikávat". Možná by stačilo i curl, ve Firefoxu lze v developers tool kopírovat jednotlivé příkazy rovnou jako curl příkazy.

Případně pokud je přístup do kódu webového rozhraní, lze prostě příslušnou část upravit a třeba přepsat do jiného jazyka a pak to může fungovat nezávisle na webovém rozhraní.

Ivan Nový

Re:Běh skriptu v časových intervalech PHP
« Odpověď #21 kdy: 09. 02. 2016, 14:20:36 »
řešení je jednoduché, z cronu spustíte skript, ten udělá co má, před vlastním ukončením pomocí curl volá skript zrcadlo, který spustí ten skript znovu, o časování se stará to zrcadlo, uspí se na libovolnou dobu, protože doba spánku se na hostingu do celkové povolené doby skriptu nepočítá. Skript zrcadla může být umístěn na vašem počítači, nebo na jiném serveru, funguje i umístění na stejném serveru. Je dobré, aby jste se zrcadlem mohl komunikovat přes obsah nějakého souboru a nastavením příznaku v něm, ho mohl ovládat, nebo zastavit, kdyby se vyskytla taková potřeba.

i-PRESS

  • ***
  • 100
  • NodeJS, Python, Perl, Lua, PHP
    • Zobrazit profil
Re:Běh skriptu v časových intervalech PHP
« Odpověď #22 kdy: 09. 02. 2016, 14:28:31 »
Takže místo aplikace na pár řádků v nodu/Pythonu vezmu scripty 2, k tomu cron a budu řešit jak zabránit vytuhnutí a spuštění další instance atd..


Výborné rady :-) Domníval jsem se, že jsme alespoň na částečně odborném fóru a ne na mimibazaru.

Ivan Nový

Re:Běh skriptu v časových intervalech PHP
« Odpověď #23 kdy: 09. 02. 2016, 14:35:13 »
Ano, protože hosting si nepřeje, abyste měl možnost spouštět skript cronem, jak potřebujete a na sdíleníém hostingu je vše nastaveno tak, aby to téměř nešlo. Jinak je to asi cca 30 řádků kódu.  Profesionální řešení je VPS, ale k tomu zase pak potřebujete správce, starat se o aktualizace sw, o zabezpečení před útoky atp., což je nakonec náročnější.

Ivan Nový

Re:Běh skriptu v časových intervalech PHP
« Odpověď #24 kdy: 09. 02. 2016, 14:46:35 »
Takže místo aplikace na pár řádků v nodu/Pythonu vezmu scripty 2, k tomu cron a budu řešit jak zabránit vytuhnutí a spuštění další instance atd..


Výborné rady :-) Domníval jsem se, že jsme alespoň na částečně odborném fóru a ne na mimibazaru.

Většinou node ani python není k dispozici a není ani možno ho doinstalovat. Moje řešení funguje i na nejlevnějším hostingu s php a plno omezeními. A autor dotazu zřejmě takový má, jinak by se takto neptal. Obvykle bývá zde možnost spouštění cronu jednou, či dvakrát za den, doba běhu skriptu bývá omezená na 90s :-)

Ivan Nový

Re:Běh skriptu v časových intervalech PHP
« Odpověď #25 kdy: 09. 02. 2016, 14:48:51 »
Já jen nechápu, proč se bráníte využít k tomu jiný jazyk.


Php na není vhodná volba. PHP process má zpracovat požadavek a chcípnout, ale existují i jiné jazyky, jako Node, Python... Proč zbytečně ohýbat PHP aby se chovalo jako trvale běžící aplikace, když u jiných jazyků toho dosáhnete daleko efektivněji na pár řádků?

jednoduše proto, že v praxi často Node, nebo python není k dispozici. V prostředí, kde je python k dispozici, by ani takový dotaz nevzniknul.

j

Re:Běh skriptu v časových intervalech PHP
« Odpověď #26 kdy: 09. 02. 2016, 18:23:48 »
...

By se taky dalo cekat, ze tazatel aspon vi o cem mluvi... a pokud se nekdo pta, jak pacidlem zatlouct hrebik...

Protoze v tomhle pripade je uplne jedno jak to pripadne na hostingu zbastlis, pozadovanou funcionalitu (tedy garantovany 1s interval) to stejne mit nebude.

mise

Re:Běh skriptu v časových intervalech PHP
« Odpověď #27 kdy: 09. 02. 2016, 18:34:51 »
Děkuji všem. Něco se pokusím udělat podle rad. Uvidím, co mi půjde. Nejsem uplný analfabet a umím danou funkci udělat (některá řešení zde byla uvedena). Jen to moje není zrovna profi, proto jsem chtěl poradit. Momentálně testuju prototyp a potřeboval jsem vědět, co bude vhodné. Zařízení je v podstatě PLC (PLA) - vstupy, výstupy, měření různých veličin, čidla apod. Tahle diskuze vznikla na základě rozšíření funkce zařízení o záznam dat a jeho pozdější zpracování. Placený hosting také plánuju, ale až bude všechno vyzkoušeno a budu vědět, která cesta je schůdná. Možná některé věci přenechám odborníkům. Ještě jednou díky.

Kit

Re:Běh skriptu v časových intervalech PHP
« Odpověď #28 kdy: 09. 02. 2016, 19:25:11 »
Zařízení je v podstatě PLC (PLA) - vstupy, výstupy, měření různých veličin, čidla apod...

Co takhle k tomu přilepit nějakou krabičku (např. RPi, ale mohlo by to zvládnout i Arduino s Ethernetem), která z naměřených dat jednou za sekundu sestaví HTTP dotaz, pošle ho na libovolný server, kde ho PHP teprve zpracuje?

mise

Re:Běh skriptu v časových intervalech PHP
« Odpověď #29 kdy: 09. 02. 2016, 20:34:56 »
Není to "home made" zařízení (nic proti RPi ani Arduinu). Momentálně to běží na windows, byl to požadavek a nic s tím neudělám. Už jsem si to snad trochu srovnal v hlavě díky diskuzi a snad se uvolní finance. Později to bude vypadat následovně: Lokální server - nějaká "krabice" s hw (už nebudu tolik omezen), který bude načítat, zálohovat a prostě zpracovávat data z několika zařízení (PLC), poběží na tom "řídící" web. A z tohoto serveru půjdou vybraná data na hosting - zobrazení dalších výsledků, souhrnů, grafů apod.