8 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
(1)如果你要執(zhí)行的php文件是定時(shí)執(zhí)行的,通過Linux crontab定時(shí)執(zhí)行任務(wù),基本格式為
* command
分 時(shí) 日 月 周 命令
(2)如果你是不斷要在后臺(tái)跑腳本,也可以借助一些進(jìn)程控制工具,譬如Supervisor,舉個(gè)之前在ubuntu配置的例子:
//如果沒有安裝supervisor,要先安裝,已經(jīng)安裝的跳過這一步
$ sudo apt-get install supervisor
$ cd /etc/supervisor/conf.d
//創(chuàng)建一個(gè)進(jìn)程配置文件
$ sudo vi laravel_queue_order.conf
//內(nèi)容如下:
[program:yourProgramName]
process_name=%(program_name)s_%(process_num)02d
command=php yourCommand
directory=/var/www/yourproject
autostart=true
autorestart=true
numprocs=4
stdout_logfile=/var/www/yourproject/storage/logs/yourProjectLogName.log
//進(jìn)程數(shù)numprocs由自己確定
//開啟進(jìn)程
sudo service supervisor start
sudo supervisorctl update
sudo supervisorctl reread
sudo supervisorctl start yourProgramName
//可以使用htop查看進(jìn)程是否正確運(yùn)行中
$ htop
//如果有出現(xiàn)command為php yourCommand的進(jìn)程,代表進(jìn)程啟動(dòng)成功

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
試試守護(hù)進(jìn)程啊 老哥
class deamon
{
public function _deamon() {
$pid = pcntl_fork();
if($pid == -1) throw new Exception('fork fail');
else if($pid > 0) {
exit('parent gone'.PHP_EOL);
}
if(posix_setsid() === -1) throw new Exception('set sid fail');
chdir('/tmp/deamon');
umask(0);
echo "child process id:" . posix_getpid().PHP_EOL;
while(1) {
// 需要執(zhí)行的代碼
}
}
}
不想執(zhí)行的時(shí)候, kill pid即可

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
有幾個(gè)可用方法:
-
&
:當(dāng)前shell
進(jìn)程下生成子進(jìn)程運(yùn)行php run.php &
缺點(diǎn):當(dāng)前
session
斷開時(shí),會(huì)向其子進(jìn)程發(fā)出hang up
信號(hào),導(dǎo)致掛起中斷 -
nohup
配合&
:忽略掛起信號(hào)運(yùn)行nohup php run.php &
解決
&
中斷的問題。 -
setsid
:讓進(jìn)程在一個(gè)新的session
下運(yùn)行,也可以避免因?yàn)楫?dāng)前session
中斷,而引起的退出 -
supervise
:是daemontools
的一個(gè)工具,可以用來監(jiān)控管理linux
下的應(yīng)用程序運(yùn)行情況,在應(yīng)用程序出現(xiàn)異常時(shí),supervise
可以重新啟動(dòng)指定程序。
具體應(yīng)用哪個(gè)需要看實(shí)際需求,
- 如果是很快執(zhí)行完的后臺(tái)進(jìn)程,可以直接用
&
- 如果是需要執(zhí)行一段時(shí)間(這段時(shí)間內(nèi)會(huì)退出當(dāng)前的
shell
),則可以考慮配合nohup
或者setsid
來運(yùn)行后臺(tái)進(jìn)程。
可以參考我的一篇共享的一篇文章:Linux 技巧:讓進(jìn)程在后臺(tái)可靠運(yùn)行的幾種方法
文中相對全面的總結(jié)了 linux 后臺(tái)運(yùn)行進(jìn)程的幾種方法,并做了對比。
閱讀此文,可以擴(kuò)充 linux 后臺(tái)運(yùn)行進(jìn)程的相關(guān)知識(shí),并明白 nohup 和 & 的區(qū)別。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
CentOS 7使用systemd
管理系統(tǒng)服務(wù),你需要花點(diǎn)時(shí)間去看看systemd
的官方文檔

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
不是很懂就別用編譯安裝應(yīng)用,如果不是編譯安裝的話。使用yum安裝,啟動(dòng)、停止都很簡單,還好用。
- 8 回答
- 0 關(guān)注
- 660 瀏覽
添加回答
舉報(bào)