GNU/Linux >> Belajar Linux >  >> Linux

Menjalankan skrip PHP dari baris perintah sebagai proses latar belakang

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

Lebih besar dari (> ) dalam perintah seperti ini mengarahkan keluaran program ke suatu tempat. Dalam hal ini, ada sesuatu yang dialihkan ke /dev/null , dan ada sesuatu yang dialihkan ke &1

Masuk, keluar, dan kesalahan standar

Ada tiga sumber standar input dan output untuk sebuah program. Input standar biasanya berasal dari keyboard jika itu adalah program interaktif, atau dari program lain jika memproses output program lain. Program biasanya mencetak ke keluaran standar, dan terkadang mencetak ke kesalahan standar. Ketiga deskriptor file ini (Anda dapat menganggapnya sebagai "pipa data") sering disebut STDIN, STDOUT, and STDERR .

Terkadang mereka tidak diberi nama, mereka diberi nomor! Penomoran bawaan untuk mereka adalah 0, 1, and 2 , dalam urutan itu. Secara default, jika Anda tidak menyebutkan nama atau nomor satu secara eksplisit, Anda berbicara tentang STDOUT .

perintah di atas mengarahkan output standar ke /dev/null , yang merupakan tempat Anda dapat membuang apa pun yang tidak Anda inginkan, lalu mengalihkan kesalahan standar ke output standar (Anda harus meletakkan & di depan tujuan saat Anda melakukan ini).

Oleh karena itu, penjelasan singkatnya adalah "semua output dari perintah ini harus didorong ke dalam lubang hitam." Itu salah satu cara yang bagus untuk membuat program benar-benar senyap!

& pada akhirnya menempatkan perintah di latar belakang.

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


Apakah Anda yakin skrip tidak mengandung kesalahan? Inilah yang biasanya membuat "eksekusi berakhir dengan sangat cepat ".
Pertama, tambahkan:

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

di bagian atas skrip Anda untuk menampilkan kesalahan apa pun yang mungkin ada, maka Anda dapat menggunakan :

nohup php filename.php &

nohup menjalankan perintah bahkan jika sesi terputus atau pengguna keluar.

ATAU

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

Sama seperti di atas tetapi tidak membuat nohup.out berkas.

Anda juga bisa menggunakan:
ignore_user_abort(1);

Setel apakah pemutusan klien harus membatalkan eksekusi skrip


`set_time_limit(0);`

Membatasi waktu eksekusi maksimum skrip, dalam hal ini skrip akan berjalan hingga proses selesai atau proses apache dimulai ulang.

#Catatan php dan filename.php jalur dapat diberikan sebagai jalur lengkap , bukan php dan filename.php , Anda dapat menggunakan /usr/bin/php dan /full/path/to/filename.php .
Disarankan Jalur Lengkap untuk menghindari file tidak ditemukan kesalahan.


prosesnya mungkin ditutup saat sesi Anda ditutup.

coba gunakan nohup php filename.php


Linux
  1. Cara Membuat Daftar Modul yang Dimuat atau Diaktifkan di PHP dari baris perintah

  2. Menjalankan Pusat Perangkat Lunak Dari Baris Perintah Sebagai Root?

  3. 6 Harapkan Contoh Argumen Baris Perintah Skrip

  1. menjalankan skrip php (fungsi php) di linux bash

  2. Bagaimana cara menginstal skrip untuk dijalankan di mana saja dari baris perintah?

  3. Menjalankan skrip Python dari PHP

  1. GLIBCXX_3.4.9 tidak ditemukan saat menjalankan ffmpeg dari php di server lampp

  2. Menjalankan Pycharm sebagai root dari launcher

  3. matlab mengeksekusi skrip dari baris perintah linux