Zadejte hledaný výraz...

V PHP (či jinak) zavolat více PHP hned po sobě

Jiří Nevický
verified
rating uzivatele
(13 hodnocení)
21. 11. 2014 03:46:54
Ahoj,
jsem PHP lama, poradíte? :) Mám soubory:
- udelejtoto.php
- ajestetoto.php
- anakonectoto.php
A potřebuji, aby se to spustilo v jednom souhrnném PHP (nebo jinak) hezky za sebou. Asi triviální dotaz, vím, ale nějak nenacházím zatím řešení.
Ono se to vlastně spouští jednotlivě cronem, ale když dám, podle mě, cron na první PHP na třeba 02:00 hod a druhé na 02:02 hod a třetí na 02:04 hod, tak to první dejme tomu nemusí do dvou minut skončit a to druhé se spustí dříve než to první skončí a to nelze. Musí se to spustit postupně, tedy první musí skončit, aby se mohlo pustit druhé a třetí může jet až po skončení druhého. Proto mám snahu vše volat v jednom PHP (nebo jinak) hezky za sebou a bez prodlev mezi tím. Když bych nastavil první cron na 02:00 hod a druhý s rezervou na 02:30 hod, tak tam je zase velká prodleva, to taky nechci.
Díky za radu a sorry za asi stupidní dotaz :)
Jiřin
21. 11. 2014 03:46:54
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070095
P-ierre
verified
rating uzivatele
(43 hodnocení)
21. 11. 2014 04:13:00
Záleží na struktuře kódu těch souborů, možná bude potřeba v nich provést nějaké úpravy (například zamezit vícenásobnému includování nějakého config souboru, který se volá v každém z nich). Ale obecně by mělo stačit tohle:
vsechno_dohromady.php
21. 11. 2014 04:13:00
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070094
mH081
verified
rating uzivatele
(1 hodnocení)
21. 11. 2014 04:50:25
PHP: include_once - Manual
21. 11. 2014 04:50:25
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070093
laksdklasd
verified
rating uzivatele
21. 11. 2014 04:59:23
Napsal P-ierre;1142642
Záleží na struktuře kódu těch souborů, možná bude potřeba v nich provést nějaké úpravy (například zamezit vícenásobnému includování nějakého config souboru, který se volá v každém z nich). Ale obecně by mělo stačit tohle:
vsechno_dohromady.php
Toto je dostatečné řešení. Pokud ale zmiňuješ, že trvání jednoho skriptu může trvat i více než 2 minuty, tak můžeš narazit na PHP limit (maximum executin time). Defaultně to bývá nastavené tak, že pokud se nějaký skript zpracovává déle než 30 sekund, tak je zastaven a vyskočí chyba.
21. 11. 2014 04:59:23
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070092
Jiří Nevický
verified
rating uzivatele
(13 hodnocení)
21. 11. 2014 05:17:15
Bože, já jsem blbej :)
echo "Spouštím aktualizaci ...n";
include ("../import/import.php?cat=ano");
?>
... mi háže chybu "failed to open stream: No such file or directory"
Potřebuji includovat něco, co leží jinde než je to moje nové PHP :) Tedy se vrátit o adresář výše, pak vnořit do adresáře "import" a tam je to "import.php".
Zkouším dvě tečky, jednu, různě ty lomítka, nic nezabírá.
PS: PHP limit mám vysoký docela nastavený = dostačující
---------- Příspěvek doplněn 21.11.2014 v 05:41 ----------
Asi by to šlo volat absolutně, tedy:
include ("http://www.domena.cz/import/import.php?cat=ano");
Ale to jsem nechtěl :)
21. 11. 2014 05:17:15
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070091
Default
verified
rating uzivatele
(94 hodnocení)
21. 11. 2014 06:07:33
V include pokud vím nemůže být parametr - otazník a parametry.
Include funguje tak, jako bych vzal zdrojáky ze všech souborů a dal CTRL+C a CTRL+V dohromady do jednoho souboru zasebe.
Řešení bych viděl takhle:
1) pustit cron každou minutu na soubor
2) v něm udělat cyklus třeba 60x se spožděním sleep(1) a zjistit aktuální stav
3) vždy by se třeba do souboru ukládal stav, kolikatý soubor následuje a jestli běží ještě ten aktuální
- zkratka spustit skript 1. a na začátku uložit do souboru něco ve smyslu "běží 1"
- na konci skriptu uložit do souboru "spustit 2"
4) pokud je v souboru ze ještě běží tak se nic neděje protože už to jeden proces zpracovává, pokud je na tam "spustit X" tak se další skript spustí, tím pádem zase zapíše do souboru a zabrání dalšímu skriptu dokud se nezpracuje běžící a takhle furt dokola
Popřípadě to omezit třeba jen na jeden cyklus za půl hodiny nebo jak je potřeba, snad je to sepsány pochopitelně, každopádně možná zná nekdo jednodušší řešení.
Pokud je ale limit vysoký stačily by ty tři include zasebou nebo rovnou nacpat všechny soubory do jednoho, nebo je volat postupně přes curl
21. 11. 2014 06:07:33
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070090
mH081
verified
rating uzivatele
(1 hodnocení)
21. 11. 2014 06:12:10
Napsal jirinjirin;1142645
Bože, já jsem blbej :)
echo "Spouštím aktualizaci ...n";
include ("../import/import.php?cat=ano");
?>
... mi háže chybu "failed to open stream: No such file or directory"
Potřebuji includovat něco, co leží jinde než je to moje nové PHP :) Tedy se vrátit o adresář výše, pak vnořit do adresáře "import" a tam je to "import.php".
Zkouším dvě tečky, jednu, různě ty lomítka, nic nezabírá.
Tohle by mohlo fungovat.
Překontrolujte práva, pokud to nefunguje a cesty se Vám zdají správné.
Napsal jirinjirin;1142645
Asi by to šlo volat absolutně, tedy:
include ("http://www.domena.cz/import/import.php?cat=ano");
To už nedělejte. Nikdy. Nebude to fungovat tak jak by jste si představoval ale především include/require se na vzdálené soubory nepoužívá.
21. 11. 2014 06:12:10
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070089
Jiří Nevický
verified
rating uzivatele
(13 hodnocení)
21. 11. 2014 06:15:23
To jsem taky zkoušel s tím dirname(__FILE__) ... ale jestli je tedy pravda, co píše kubiro, tedy že "V include pokud vím nemůže být parametr - otazník a parametry", tak jsem s normálním voláním v pasti ...
---------- Příspěvek doplněn 21.11.2014 v 06:17 ----------
A ono to tak asi fakt bude, když je to include vlastně naskládání obsahů X souborů jakoby za sebe do jednoho PHP ... chjo
21. 11. 2014 06:15:23
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070088
Default
verified
rating uzivatele
(94 hodnocení)
21. 11. 2014 06:19:21
Napsal jirinjirin;1142649
To jsem taky zkoušel s tím dirname(__FILE__) ... ale jestli je tedy pravda, co píše kubiro, tedy že "V include pokud vím nemůže být parametr - otazník a parametry", tak jsem s normálním voláním v pasti ...
---------- Příspěvek doplněn 21.11.2014 v 06:17 ----------
A ono to tak asi fakt bude, když je to include vlastně naskládání obsahů X souborů jakoby za sebe do jednoho PHP .. chjo
Jak jsem psal, include je jak zkopírování zasebe, tak proč jednoduše nedat před include
$promenna = "to co chci přenést";
Nebo by snad mohlo dokonce i tohle fungovat:
$_GET = "ano";
Ten soubor tu proměnnou bude brát ;)
21. 11. 2014 06:19:21
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070087
napis si vlastni cron managment a spoustej jeden script kazdou minutu :)
21. 11. 2014 08:10:57
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070086
mH081
verified
rating uzivatele
(1 hodnocení)
21. 11. 2014 08:26:50
Napsal Re4DeR;1142659
napis si vlastni cron managment a spoustej jeden script kazdou minutu :)
"Musí se to spustit postupně, tedy první musí skončit, aby se mohlo pustit druhé a třetí může jet až po skončení druhého."
Nechápu, proč se tu výmýšlí nějaká "sofistikovaná" řešení. Jestli jsem to správně pochopil, scripty jsou na jednom serveru, include/require je dostačující.
21. 11. 2014 08:26:50
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070085
Martin
verified
rating uzivatele
(62 hodnocení)
21. 11. 2014 09:50:52
Spíš bych na konec souboru přidal přesměrování na další. Tak to poběží jako samostatné scripty a pěkně po sobě.
21. 11. 2014 09:50:52
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070084
Napsal mH~;1142663
"Musí se to spustit postupně, tedy první musí skončit, aby se mohlo pustit druhé a třetí může jet až po skončení druhého."
Nechápu, proč se tu výmýšlí nějaká "sofistikovaná" řešení. Jestli jsem to správně pochopil, scripty jsou na jednom serveru, include/require je dostačující.
include je imho nesmysl snadno ti to popada.
to co pise martin kejzlar je lepsi.
21. 11. 2014 11:29:21
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070083
mH081
verified
rating uzivatele
(1 hodnocení)
21. 11. 2014 11:30:40
Co ti popadá?
21. 11. 2014 11:30:40
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070082
Jiří Nevický
verified
rating uzivatele
(13 hodnocení)
21. 11. 2014 11:47:45
Napsal mH~;1142663
"Musí se to spustit postupně, tedy první musí skončit, aby se mohlo pustit druhé a třetí může jet až po skončení druhého."
Nechápu, proč se tu výmýšlí nějaká "sofistikovaná" řešení. Jestli jsem to správně pochopil, scripty jsou na jednom serveru, include/require je dostačující.
Skripty jsou na jednom serveru, ale co jsem se dozvěděl zde, tak include neumí parametry ... viz mé "include ("../import/import.php?cat=ano");"
Ty jednotlivé skripty jsou pro mě černé skřínky, do kterých toho moc nepřipíšu ...
21. 11. 2014 11:47:45
https://webtrh.cz/diskuse/v-php-ci-jinak-zavolat-vice-php-hned-po-sobe#reply1070081
Pro odpověď se přihlašte.
Přihlásit