GNU/Linux >> Znalost Linux >  >> Linux

Spuštění PHP skriptu z příkazového řádku jako proces na pozadí

nohup php file.php > /dev/null 2>&1 &

Větší než (> ) v příkazech, jako jsou tyto, přesměrují výstup programu někam. V tomto případě je něco přesměrováno na /dev/null a něco je přesměrováno na &1

Standardní vstup, výstup a chyba

Existují tři standardní zdroje vstupu a výstupu programu. Standardní vstup obvykle pochází z klávesnice, pokud se jedná o interaktivní program, nebo z jiného programu, pokud zpracovává výstup jiného programu. Program obvykle tiskne na standardní výstup a někdy tiskne se standardní chybou. Tyto tři deskriptory souborů (můžete si je představit jako „datové kanály“) se často nazývají STDIN, STDOUT, and STDERR .

Někdy nejsou pojmenováni, jsou očíslováni! Vestavěné číslování pro ně je 0, 1, and 2 , v tomto pořadí. Ve výchozím nastavení, pokud výslovně neuvedete jméno nebo číslo jedna, mluvíte o STDOUT .

výše uvedený příkaz přesměrovává standardní výstup na /dev/null , což je místo, kde můžete vypsat vše, co nechcete, a poté přesměrovat standardní chybu na standardní výstup (musíte zadat & před cílem, když to uděláte).

Krátké vysvětlení proto zní „veškerý výstup z tohoto příkazu by měl být strčen do černé díry“. To je jeden dobrý způsob, jak zajistit, aby byl program opravdu tichý!

& na konci umístí příkaz na pozadí.

ref:https://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/


Jste si jisti, že skript neobsahuje žádné chyby? To je to, co obvykle způsobí, že "provádění skončí velmi rychle ".
Nejprve připojte:

error_reporting(E_ALL); ini_set('display_errors', 1);

v horní části skriptu, abyste zobrazili případné chyby, pak můžete použít :

nohup php filename.php &

nohup spustí příkaz, i když je relace odpojena nebo se uživatel odhlásí.

NEBO

nohup php filename.php >/dev/null 2>&1 &

Stejné jako výše, ale nevytváří nohup.out soubor.

Můžete také použít:
ignore_user_abort(1);

Nastavte, zda má odpojení klienta přerušit provádění skriptu


`set_time_limit(0);`

Omezuje maximální dobu provádění skriptu, v tomto případě poběží, dokud proces neskončí nebo se restartuje proces Apache.

#NotesThe php a filename.php cesty mohou být poskytovány jako úplná cesta , namísto php a filename.php , můžete použít /usr/bin/php a /full/path/to/filename.php .
Doporučuje se úplná cesta abyste zabránili tomu, že soubor nebyl nalezen chyby.


proces může být uzavřen, když je vaše relace uzavřena.

zkuste použít nohup php filename.php


Linux
  1. Zabránění souběžnému spuštění bash skriptu

  2. Jak zobrazit seznam modulů načtených nebo povolených v PHP z příkazového řádku

  3. Spuštění softwarového centra z příkazového řádku jako root?

  1. 6 Očekávejte příklady argumentů příkazového řádku skriptu

  2. Spusťte php skript jako proces démona

  3. Jak nainstaluji skript pro spuštění kdekoli z příkazového řádku?

  1. Jak mohu spustit kód PHP z příkazového řádku?

  2. GLIBCXX_3.4.9 nebyl nalezen při spuštění ffmpeg z php na lampp serveru

  3. Spuštění Pycharm jako root ze spouštěče