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