PHP Daemon Contoh_Pengetahuan Asas

WBOY
Lepaskan: 2016-05-16 16:10:51
asal
1114 orang telah melayarinya

PHP juga boleh memulakan dan menamatkan proses daemon secara langsung. Berbanding dengan shell, ia adalah lebih mudah dan lebih mudah untuk memahami proses php daemon masih bergantung pada jadual crontab shell skrip sekali-sekala untuk melihat sama ada skrip perlu dimulakan semula Jika perlu, matikan proses, padam fail RunFile, mulakan semula dan tulis pid dalam fail RunFile.

Salin kod Kod adalah seperti berikut:

fungsi mula($fail){
$path = diname(__FILE__).'/';
$runfile = $path.$file.'.run';
$diefile = $path.$file.'.die';
$file = $path."data/{$file}.php";
clearstatcache();
If(file_exists($runfile)){
          $oldpid = file_get_contents($runfile);
           $nowpid = shell_exec("ps aux | grep 'php -f process.php' | grep ${oldpid} | awk '{print $2}'");
//Jika nombor pid dalam runfile boleh sepadan dengan yang sedang berjalan, dan perbezaan antara kali terakhir runfile diakses dan masa semasa adalah kurang daripada 5 minit, kemudian kembalikan
If(($oldpid == $nowpid) && (time() - fileatime($runfile) < 300)){
echo "$file is circle running no";
             kembali;
         }lain{
//Jika nombor pid tidak sepadan atau pernyataan gelung tidak dijalankan selama 300 saat, matikan proses terus dan mulakan semula
                $pid = file_get_contents($runfile);
shell_exec("ps aux | grep 'php -f process.php' | grep {$pid} | xargs --if-no-run-empty kill");
}
}lain{
//Tulis pid fail ke dalam fail run
If(!($newpid = getmypid()) || !file_put_contents($runfile,$newpid)){
             kembali;
}
         manakala (benar){
//Terima nombor baharu proses penamat, tamatkan proses dan padam fail berkaitan
If(file_exists($diefile) && nyahpaut($runfile) && nyahpaut($diefile)){
                  kembali;
            }
                 /*Berikut ialah proses daemon lakukan*/
              file_put_contents($file,"Saya Menjalankan Sekarang".PHP_EOL,FILE_APPEND);
               /***********************/
               sentuh($runfile);
              tidur (5);
}
}
}
mula ("ujian");

Hp harus memberi perhatian kepada beberapa perkara semasa menulis proses daemon:

1. Yang pertama ialah fungsi clearstatcache(). Semak manual rasmi untuk mengetahui bahawa fungsi ini mengosongkan cache status fail Apabila menyemak status cache fail yang sama beberapa kali dalam skrip, ralat akan berlaku jika ini fungsi tidak digunakan, yang terjejas oleh fungsi ini ialah: stat(), lstat(), file_exists(), is_writable(),is_readable(), is_executable(), is_file(), is_dir(), is_link(),filectime (), fileatime( ), filemtime(), fileinode(), filegroup(),fileowner(), filesize(), filetype(), fileperms().
2. Apabila skrip dijalankan beberapa kali, ia akan dikesan sebelum dijalankan Jika masa sejak pelaksanaan terakhir gelung kini lebih daripada 300s atau nombor pid tidak sepadan, proses akan dimulakan semula (masa mesti. dikemas kini setiap kali gelung dilaksanakan).
3. Mulakan semula automatik juga menggunakan jadual crontab. Tambahkan fail ini pada jadual:

Salin kod Kod adalah seperti berikut:

crontab -e
#Jadual buka, mod inset

*/3 * * * * /usr/bin/php -f process.php
#Lakukan setiap 3 minit sekali, letakkan proses untuk menggantung

Ini pada asasnya ok Jika terdapat fungsi tertentu, kod masih perlu diubah suai.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!